Я хотел бы реализовать метод, который отображает диалог, ждет, пока диалог не будет отклонен, а затем вернет результат в зависимости от содержимого диалогового окна. Возможно ли это?
public String getUserInput()
{
//do something to show dialog
String input = //get input from dialog
return input;
}
Я на самом деле пытаюсь реализовать интерфейс, который имеет метод "public String getUserInput()", где возвращаемая строка должна быть восстановлена через диалог. Это легко сделать в java, кажется невозможным в android?
РЕДАКТИРОВАТЬ: Проводка некоторого образца кода в соответствии с запросом в комментарии
getInput()
должен быть вызван из фонового потока (я называю его из AsynchTask). getInput() отображает диалог и вызывает ожидание. Когда в диалоговом окне нажата кнопка ok, диалог устанавливает пользовательский ввод в переменной-члене и вызывает уведомление. Когда вызывается уведомление, getInput() продолжает и возвращает переменную-член.
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;
}