Me gustaría implementar un método que muestre un cuadro de diálogo, espere hasta que se desestime el diálogo y luego devuelva un resultado según los contenidos del diálogo. es posible?Android: ¿espera la entrada del usuario desde el cuadro de diálogo?
public String getUserInput()
{
//do something to show dialog
String input = //get input from dialog
return input;
}
De hecho, estoy tratando de implementar una interfaz que tiene el método "Cadena getUserInput pública()", donde la cadena devuelta debe ser recuperada a través de diálogo. Esto se hace fácilmente en Java, parece imposible en Android?
EDIT: Publicación de un código de ejemplo a lo solicitado en el comentario
getInput()
debe ser llamado desde un subproceso de fondo (lo llamo desde una AsynchTask). getInput() muestra un diálogo y las llamadas esperan. Cuando se presiona el botón Aceptar en el diálogo, el diálogo establece la entrada del usuario en una variable miembro y las llamadas notifican. Cuando se invoca notify, getInput() continúa y devuelve la variable miembro.
String m_Input;
public synchronized String getInput()
{
runOnUiThread(new Runnable()
{
@Override
public void run()
{
AlertDialog.Builder alert = new AlertDialog.Builder(context);
//customize alert dialog to allow desired input
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton)
{
m_Input = alert.getCustomInput();
notify();
}
});
alert.show();
}
});
try
{
wait();
}
catch (InterruptedException e)
{
}
return m_Input;
}
No puede esperar al usuario en un método llamado en el subproceso de interfaz de usuario. Por lo tanto, debe cambiar a un modelo de flujo de programa impulsado por eventos o invocarlo desde un hilo de fondo que puede esperar hasta que un método onWhatever() invoque el hilo de UI en respuesta a la acción del usuario actualiza cualquier método de fondo que esté esperando. –
Realmente no entiendo, ¿podría explicar cómo llamaría esto desde un hilo de fondo, y luego devolver mi cadena en lo que sea()? – ab11
Porque si bloquearas el hilo de la IU por más de 3 (?), Creo que fueron tres segundos en los que recibirías una ventana emergente de diálogo ANR preguntándote si deseas cerrar la aplicación. Nunca ejecute material de bloqueo en el hilo de la interfaz de usuario en Android. –