2010-10-19 13 views
10

Chciałbym poprosić użytkownika, aby dał mi dane wejściowe w mojej aplikacji Android za pomocą okna dialogowego. to co znalazłem:Wprowadzanie danych przez użytkownika systemu Android za pomocą okna dialogowego

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(); 

ale daje mi:

android.view.WindowManager $ BadTokenException: Nie można dodać okno - token nie jest zerowy dla aplikacji

jest tam każdy problem na moim kodzie wydaje się, że w dialogu pojawia się pusty argument, ale nie mogę się dowiedzieć, jaki jest problem.

+1

wartość 'ciąg = input.getText() toString().' – Fred

Odpowiedz

8

Po uruchomieniu kodu w nowym projekcie działało dobrze. Więc prawdopodobnie „to”, że używasz

  • nie jest działalność
  • nie jest działalność w świetle znaczy, że może być aktywność rodzicem. Jeśli jest dzieckiem jakiejś aktywności, użyj getParent() zamiast "this".
  • jest null

Nadzieja to pomaga.

3

Napisałem klasę pomocniczą, która ułatwia utworzenie szybkiego okna dialogowego z kilkoma liniami kodu.

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

Powiązane problemy