2017-03-25 3 views
-1

J'ai créé une application dans laquelle l'utilisateur saisit un mot de passe, clique sur le bouton et l'emmène dans une nouvelle activité. J'ai fait une activité de création de mot de passe où l'utilisateur entre d'abord un nouveau mot de passe et cela les amène ensuite à l'activité principale. dans l'activité principale, l'utilisateur tape le mot de passe créé, clique sur le bouton et il passe à l'activité suivante. Cependant, en cliquant sur le bouton après la saisie du mot de passe (correct ou incorrect), l'application se bloque. quelqu'un peut-il conseiller s'il vous plaît? Android Manifest ci-dessous:application se bloque après un clic sur le bouton une fois que le mot de passe est entré

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.junaidandroid.androidsecure"> 
<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name="com.junaidandroid.CreatePassword"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="com.junaidandroid.androidsecure.MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="com.junaidandroid.Activity2" 
     android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="com.junaidandroid.NoteLauncher"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 

    </activity> 
</application> 

`

du code Java pour MainActivity

public class MainActivity extends AppCompatActivity { 

EditText editText; 
Button button2; 

String password; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView (R.layout.activity_main); 


    //load the password 
    SharedPreferences settings = getSharedPreferences("PREFS", 0); 
    password = settings.getString("password", ""); 

    editText = (EditText) findViewById(R.id.editText); 
    button2 = (Button) findViewById(R.id.button2); 

    button2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String text = editText.getText().toString(); 

      if (text.equals(password)){ 
       //enter the app 
       Intent intent = new Intent(getApplicationContext(), Activity2.class); 
       startActivity(intent); 
       finish(); 
      } else { 
       Toast.makeText(MainActivity.this, "Wrong Password", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 
} 

}

Je suis maintenant AJOUTÉE ERREUR logcat CI-DESSOUS:

EXCEPTION FATAL: main P processus: com.junaidandroid.androidsecure, PID: 2569 java.lang.NullPointerException: Tentative d'invoquer la méthode virtuelle 'android.text.Editable android.widget.EditText.getText()' sur une référence d'objet nul at com.junaidandroid. androidsecure.MainActivity $ 1.onClick (MainActivity.java:38) à android.view.View.performClick (View.java:5610) à android.view.View $ PerformClick.run (View.java:22265) at android .os.Handler.handleCallback (Handler.java:751) à android.os.Handler.dispatchMessage (Handler.java:95) à android.os.Looper.loop (Looper.java:154) à android.app .ActivityThread.main (ActivityThr ead.java:6077) à java.lang.reflect.Method.invoke (méthode native) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:865) à com.android.internal .os.ZygoteInit.main (ZygoteInit.java:755)

+0

Afficher votre erreur logcat – shmakova

+0

Je suis nouveau sur android studio, comment puis-je trouver le logcat? – Jay1

+1

Possible duplicata de [Malheureusement MyApp s'est arrêté. Comment puis-je résoudre ce problème?] (Http://stackoverflow.com/questions/23353173/unheureusement-myapp-has-stopped-how-can-i-solve-this) –

Répondre

0

Assurez-vous que vous avez écrire findViewById correcte de edittext. Cette exception de pointeur nul se produit juste parce que De vous essayant d'obtenir la valeur d'edittext quel id n'est pas correct. Cet id de texte d'édition devrait être identique au fichier xml que vous avez déclaré.

editText = (EditText)findViewById(R.id.your_edittext_id); 
+0

oui, j'ai réussi à résoudre le problème, c'était exactement comme vous venez de le souligner, l'ID ne correspond pas à celle du fichier XML par conséquent, pourquoi il a continué à s'écraser – Jay1

+0

Il ya une chose que je voudrais vous suggérer quand vous sans entrer le mot de passe et cliquez sur le bouton votre application va se briser alors changez votre condition if comme ça ... if (! TextUtils.isempty (texte) && text.equals (mot de passe)) { – shahid17june

0

coup de poignard dans le noir que vous ne l'avez pas posté votre logcat ...

editText devrait être déclarée final si vous voulez y accéder dans un intérieur classe. L'exception est levée lorsque vous essayez d'y accéder ici:

String text = editText.getText().toString(); 
+0

Je suis nouveau sur Android Studio et je ne sais pas comment obtenir le logcat – Jay1

+0

Sur la barre du bas dans Android Studio, sélectionnez "Android Monitor".Modifier votre question pour inclure le gros bloc de texte rouge qui apparaît lorsque votre application se bloque – aliaksei

+0

le logcat est vide, même après que l'application se bloque – Jay1