2012-06-06 6 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. Поэтому в моем файле на самом деле говорится об андроиде-15. – JuiCe

1

Пожалуйста, оставьте свои ошибки LogCat, но я думаю, чтобы убедиться, что LevelOne и LevelZero в вашем файле манифеста. Кроме того, это может помочь изменить это:

loginPassword.toString().equals(LEVEL_ONE_ACCESS_CODE) 

к:

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

у вас зарегистрировать LevelOne и LevelZero в файле манифеста

1

Вот ссылка на аналогичный SO вопрос, который показывает, как добавить действия к вашему манифесту.

Add a new activity to the AndroidManifest?

+0

Ну, у меня не было этого в моем манифесте, поэтому спасибо, но теперь он дает мне еще одну ошибку: «Никакой активности запуска не было! Запуск будет только синхронизировать пакет приложений с устройством!«Это мой файл манифеста: – JuiCe

+0

Я добавил файл манифеста в свой исходный пост – JuiCe

+1

Вы все еще получаете эту ошибку? (Похоже, вы не должны быть, глядя на ваш манифест) Или вы просто получаете« неспособность разрешить цель », Если последний, перейдите к свойствам вашего проекта и измените цель сборки. – Ryan

Смежные вопросы