2010-10-19 9 views
10

Vorrei chiedere all'utente di darmi l'input nella mia applicazione Android utilizzando una finestra di dialogo. questo è quello che ho trovato:input utente android prompt utilizzando una finestra di dialogo

AlertDialog.Builder alert = new AlertDialog.Builder(this); 

alert.setTitle("Title"); 
alert.setMessage("Message"); 

// Set an EditText view to get user input 
final EditText input = new EditText(this); 
alert.setView(input); 

alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog, int whichButton) { 
String value = input.getText(); 
// Do something with value! 
} 
}); 

alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog, int whichButton) { 
    // Canceled. 
} 
}); 

alert.show(); 

ma questo mi dà :

android.view.WindowManager $ BadTokenException: Impossibile aggiungere finestra - nulla pedina non è per un'applicazione

è C'è qualche problema sul mio codice sembra che un argomento nullo sia passato alla finestra di dialogo, ma non riesco a scoprire qual è il problema.

+1

'String value = input.getText() toString();.' – Fred

risposta

8

Quando ho eseguito il codice in un nuovo progetto, ha funzionato correttamente. Quindi probabilmente "questo" che si sta utilizzando

  • non è un'attività
  • non è l'attività in vista cioè ci potrebbe essere un'attività genitore. Se è figlio di qualche attività, usa getParent() invece di "this".
  • è nullo

Spero che questo aiuti.

3

Ho scritto una classe di supporto che semplifica la creazione di una finestra di dialogo di prompt con solo poche righe di codice.

PromptDialog dlg = new PromptDialog(MainActivity.this, R.string.title, R.string.enter_comment) { 
@Override 
public boolean onOkClicked(String input) { 
    // do something 
    return true; // true = close dialog 
} 
}; 
dlg.show(); 

See full code => Prompt Dialog for Android

Problemi correlati