Оповещение всплыло поздно - PullRequest
3 голосов
/ 27 января 2010

/ * У меня какая-то странная проблема: внутри OnMenuItemClickListener я вызываю созданный мной диалог оповещения, но кажется, что когда я вызываю диалог оповещения, он не показывает его в нужный момент, только после завершения onMenuItemClick. что я делаю? * /

class MyListMenuListener implements OnMenuItemClickListener
    {

        private String TAG;

        @Override
        public boolean onMenuItemClick(MenuItem item)
        {
            if (item.getItemId() == saveRoute.getItemId())
            {                   
                alertDialogSaveFile();
                //nameInput = "testone.txt";
                //some operations
//                                      ...
 //                                      return true;
            }

// ...

/*the wierd thing is that the alert dialog doesnt show up on the same moment i call it..
only after the onMenuItemClick operation ends (with return)
and this is how my alertdialog looks like:*/

        private void alertDialogSaveFile()
{

AlertDialog.Builder alert = new AlertDialog.Builder(this);
        alert.setTitle("Save your current map");
        alert.setMessage("Please insert name for this route");
        final EditText saveNameInput = new EditText(TwittListActivity.this);

        alert.setView(saveNameInput);
        alert.setPositiveButton("Ok", new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int whichButton)
            {
                nameInput = saveNameInput.getText().toString();
            }
        });

        alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int whichButton)
            {
            }
        });
         AlertDialog ad = alert.create();
         ad.show();
    }


//Thanks!
//ray.

1 Ответ

3 голосов
/ 27 января 2010

Диалоги в Android не являются синхронными, поэтому весьма вероятно, что поток пользовательского интерфейса завершает onMenuItemClick() перед созданием / отображением вашего диалога (диалоги управляются активным действием).

Редактировать : Я неправильно понял часть вашего вопроса. Сохраните вызов alertDialogSaveFile() там, где он есть, и поместите код, который фактически сохраняет файл, в обработчик onClick(). Поскольку диалоги в Android не являются синхронными, необходимо выполнить действие сохранения в самом обратном вызове диалога. Невозможно отобразить диалоговое окно, дождаться ответа пользователя и затем получить результат из диалогового окна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...