2017-10-19 7 views
0

En ce moment je me sens vraiment stupide et j'espère vraiment être incapable de trouver une solution comme ça. Ce que je veux faire: l'alerte a un edittext, l'entrée de cet edittext sera utilisée dans l'activité suivante mon problème est que le test de chaîne est toujours nul. Qu'est-ce que je fais mal?android edittext dans le dialogue retourne null

public void CalibrateButtonClicked(View v) { 
AlertDialog.Builder builder = new AlertDialog.Builder(this); 
LayoutInflater inflater = this.getLayoutInflater(); 

final View dialogView = inflater.inflate(R.layout.dialog, null); 
builder.setMessage("calibration"); 


builder.setView(dialogView) 
     .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // startActivity(new Intent(FaceMenu.this, FaceTrackerActivity.class)); 
       EditText edit = (EditText)dialogView.findViewById(R.id.editText2); 
       String test= edit.getText().toString(); 
       Intent intent = new Intent(getBaseContext(), FaceTrackerActivity.class); 
       intent.putExtra("EXTRA_SESSION_ID", test); 
       startActivity(intent); 

      } 
     }) 
     .create().show(); 
} 
+0

Le 'EditText' est nulle, ou' getText() toString() 'retourne un' vide CHAINE'? –

+0

test est nul, ce qui signifie que getText(). ToString() est nul aussi – user9821

+0

'getText(). ToString()' ne renverra pas null. Cela pourrait renvoyer un 'String' vide, mais ce n'est pas la même chose. Est-ce qu'il retourne un 'String' vide, ou est-ce que quelque chose se bloque là-bas? –

Répondre

0

votre EditText extérieur Initialiser à votre setPositiveButton

comme:.

public void CalibrateButtonClicked(View v) { 
AlertDialog.Builder builder = new AlertDialog.Builder(this); 
LayoutInflater inflater = this.getLayoutInflater(); 

final View dialogView = inflater.inflate(R.layout.dialog, null); 
final EditText edit = (EditText)dialogView.findViewById(R.id.editText2); 

builder.setMessage("calibration"); 
builder.setView(dialogView) 
     .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // startActivity(new Intent(FaceMenu.this, FaceTrackerActivity.class)); 
       String test= edit.getText().toString(); 
       Intent intent = new Intent(getBaseContext(), FaceTrackerActivity.class); 
       intent.putExtra("EXTRA_SESSION_ID", test); 
       startActivity(intent); 

      } 
     }) 
     .create().show(); 
} 
0

Pouvez-vous essayer de mettre la liaison de vue sur OnClickListener?

public void CalibrateButtonClicked(View v) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 

    final View dialogView = View.inflate(R.layout.dialog, null); 
    EditText edit = (EditText) dialogView.findViewById(R.id.editText2); 

    builder.setMessage("calibration"); 
    builder.setView(dialogView) 
     .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
      // startActivity(new Intent(FaceMenu.this, FaceTrackerActivity.class)); 
      String test= edit.getText().toString(); 
      Intent intent = new Intent(getBaseContext(), FaceTrackerActivity.class); 
      intent.putExtra("EXTRA_SESSION_ID", test); 
      startActivity(intent); 

      } 
     }) 
     .create().show(); 
    }