2012-11-27 3 views
9

Ho il seguente codice che crea dialogo avviso e ho aggiunto due modificare il testo ad esso, ma una volta che ho eseguito l'applicazione non saranno retrived i valori all'interno del EditText e la mia app scontro con NullPointerException:Aggiunta di EditText alla finestra di dialogo degli avvisi.

il codice è:

AlertDialog.Builder alert = new AlertDialog.Builder(this); 
     LayoutInflater inflater=this.getLayoutInflater(); 
     final EditText usernameInput=(EditText)findViewById(R.id.dialogusername); 
     final EditText passwordInput=(EditText)findViewById(R.id.dialogpassword); 
     alert.setView(inflater.inflate(R.layout.dialog,null)); 
     alert.setTitle("Enter Password"); 
     alert.setMessage("Enter password to remove the app:"); 
     alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
      //provide user with caution before uninstalling 
      //also here should be added a AsyncTask that going to read the password and once its checked the password is correct the app will be removed 
      value1=usernameInput.getText().toString(); 
      value2=passwordInput.getText().toString(); 
      if(value1.equals(null)&&value2.equals(null)) 
      {Toast.makeText(context, "Enter username and password", Toast.LENGTH_SHORT).show();} 
     } 
     }); 
     }); 
     alert.show(); 
+0

Chiama findViewById errato. Chiama alert.findViewByID – Yahor10

+0

grazie a Yahor10, ma ho cercato di farlo a modo tuo e continuo a ricevere un errore poiché non esiste alcuna funzione chiamata alert.findViewById(); l'unica cosa che ho ottenuto è this.findViewById() che non ha funzionato .. ma qualsiasi modo in cui ho postato la soluzione che ho usato per risolvere questo problema sotto .. –

risposta

22

Grazie ragazzi per il vostro contributo a rispondere alla mia domanda, e penso che ho avuto la soluzione per il problema che ho postato sopra del quale è:

AlertDialog.Builder alert = new AlertDialog.Builder(MyFeedActivity.this); 
     LayoutInflater inflater=MyFeedActivity.this.getLayoutInflater(); 
     //this is what I did to added the layout to the alert dialog 
     View layout=inflater.inflate(R.layout.dialog,null);  
     alert.setView(layout); 
     final EditText usernameInput=(EditText)layout.findViewById(R.id.dialogusername); 
     final EditText passwordInput=(EditText)layout.findViewById(R.id.dialogpassword); 

e penso il problema era che non riesco a ottenere l'EidtText all'interno della finestra di avviso, ma eseguendo il codice sopra ogni cosa funziona bene con me.

1

editing Prova come questo

final EditText usernameInput=(EditText)this.findViewById(R.id.dialogusername); 
final EditText passwordInput=(EditText)this.findViewById(R.id.dialogpassword); 

O

final EditText usernameInput=(EditText)alert.findViewById(R.id.dialogusername); 
final EditText passwordInput=(EditText)alert.findViewById(R.id.dialogpassword); 
10

uso questo:

final AlertDialog alertDialog = new AlertDialog.Builder(this).create(); 
    final EditText input = new EditText(this); 
    input.setHint("hint"); 
    alertDialog.setTitle("title"); 
    alertDialog.setMessage(message); 
    alertDialog.setView(input); 
+0

questo è il modo migliore per farlo, grazie –