警报对话框弹出较晚

前端之家收集整理的这篇文章主要介绍了警报对话框弹出较晚 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

/ *我在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",int whichButton)
            {
            }
        });
         AlertDialog ad = alert.create();
         ad.show();
    }


//Thanks!
//ray.
最佳答案
Android中的对话框不是同步的,因此UI线程很可能在创建/显示对话框之前就完成了onMenuItemClick()(对话框由封闭的Activity管理).

编辑:我误解了您的问题的一部分.将调用保持在原来的位置,然后将实际保存文件代码放入onClick()处理函数中.由于Android中的对话框不是同步的,因此您需要在对话框回调本身中执行save操作.无法显示对话框,等待用户响应,然后从对话框中获取结果.

猜你在找的Android相关文章