2012-06-06 70 views
0

所以我知道它与我的“startActivity(myIntent)”代码行有关。这是我的第一个活动文件为什么我的android应用程序崩溃?

public class Commander2 extends Activity { 
    /** Called when the activity is first created. */ 

    private static final String TAG = "AccessCodeEntry"; 
    private static final String LEVEL_ONE_ACCESS_CODE = "derp"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.accesscodeentry); 
    } 

protected void onDestroy() { 
    super.onDestroy(); 
} 

public void accessCodeEntered(View v) { 
    EditText loginPassword = (EditText) findViewById(R.id.editText1); 
    if(loginPassword.toString().equals(LEVEL_ONE_ACCESS_CODE)) { 
     Intent myIntent = new Intent(Commander2.this, LevelOne.class); 
     startActivity(myIntent); 
    } else { 
     Intent myIntent = new Intent(Commander2.this, LevelZero.class); 
     startActivity(myIntent); 
    } 
} 
} 

这里是XML文件。

<?xml version="1.0" encoding="UTF-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:onClick="accessCodeEntered" 
     android:text="OK" /> 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/button1" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="19dp" 
     android:ems="10" 
     android:inputType="textPassword" > 

     <requestFocus /> 
    </EditText> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/editText1" 
     android:layout_alignLeft="@+id/editText1" 
     android:text="Enter Access Code, or leave blank for Level 0" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

</RelativeLayout> 

我输入密码后立即退出,然后按OK按钮,不管输出如何。我已将startActivity(myIntent)行和代码完成注释掉,而不会崩溃。有谁知道我做错了什么?

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="my.eti" 
    android:versionCode="1" 
    android:versionName="1.0"> 
<uses-sdk android:minSdkVersion="10" /> 
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name"> 
    <activity android:name=".Commander2" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".LevelOne" 
       android:label="@string/app_name"> 
     <intent-filter>     
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".LevelZero" 
       android:label="@string/app_name"> 
     <intent-filter>     
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 
</manifest> 
+0

您是否将LevelOne活动添加到清单中? – Ryan

回答

1

EDIT : i am updating my answer

所以最后我得到了你在哪里走错了

  • 检查,如果条件
  • 在accessCodeEntered()方法
  • Commander2.java的
  • 活动

if(loginPassword.toString().equals(LEVEL_ONE_ACCESS_CODE)){} 

这里你没有得到密码的值,并尝试使用它 所以我说“getText()”方法及其工作的罚款这样


if(loginPassword.getText().toString().equals(LEVEL_ONE_ACCESS_CODE)){} 

Commander2。 java


package my.eti; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 

public class Commander2 extends Activity implements OnClickListener { 
    /** Called when the activity is first created. */ 

    private static final String TAG = "AccessCodeEntry"; 
    private static final String LEVEL_ONE_ACCESS_CODE = "derp"; 

    private Button btnOK; 
    private EditText passTxt; 

    private String strPass; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.accesscodeentry); 

     passTxt = (EditText) findViewById(R.id.editText1); 

     btnOK =(Button) findViewById(R.id.button1); 
     btnOK.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

     if(v==btnOK){ 

      /*... here is the problem we havent added getText() to get value from EditText...*/ 
     if(loginPassword.getText().toString().equals(LEVEL_ONE_ACCESS_CODE)){ 
      Intent myIntent = new Intent(Commander2.this, LevelOne.class); 
      Toast.makeText(getBaseContext(), "if condition is true..", Toast.LENGTH_SHORT).show(); 
      startActivity(myIntent); 
     } 
     else{ 
      Intent myIntent = new Intent(Commander2.this, LevelZero.class); 
      Toast.makeText(getBaseContext(), "else condition is true..", Toast.LENGTH_SHORT).show(); 

      startActivity(myIntent); 
     } 
     } 

    } 
} 

尝试实现此代码,并在哪里出错。

你还有什么麻烦与我分享谢谢。

+0

不幸的是,它仍然崩溃,我没有将清单文件更改为你所拥有的,将SDK版本更改为10. – JuiCe

+1

确保你也应该更改“这个行上的“default.properties”文件“target = android-8”为10. – swiftBoy

+0

好吧,我没有这样做,我现在正在改变它,它一直说“无法解决目标'的android-10。 “我最初创建项目后不允许更改使用哪个SDK?我只在计算机上下载了最新的SDK,但我试图编写2.3版本,因此在我的文件中实际上是说android-15。 – JuiCe

1

请发表您的logcat的错误,但我的猜测是,以确保LevelOneLevelZero在你的清单文件。此外,它可能会帮助改变这种:

loginPassword.toString().equals(LEVEL_ONE_ACCESS_CODE) 

到:

loginPassword.getText().toString().equals(LEVEL_ONE_ACCESS_CODE) 
1

有您注册LEVELONELevelZero清单文件

1

下面是一个类似的链接SO问题展示了如何将活动添加到清单。

Add a new activity to the AndroidManifest?

+0

嗯,我没有在我的清单中,所以谢谢,但现在它给了我另一个错误:“没有发现启动器活动!启动只会同步设备上的应用程序包!“这是我的清单文件: – JuiCe

+0

我将清单文件添加到了我的原始文章 – JuiCe

+1

您是否仍然收到该错误?(看起来您不应该通过查看清单)或者您是否”无法解决目标“如果是后者,转到你的项目属性并更改构建目标 – Ryan

相关问题