警报对话框弹出后期
问题描述:
/*我有一些奇怪的问题,里面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.
答
对话框中的Android是不同步的,所以它很可能是在UI线程正在创建之前完成onMenuItemClick()
/显示你的对话(对话是由封闭Activity管理)。
编辑:我误解了你的部分问题。保持对alertDialogSaveFile()
的调用,并将实际保存文件的代码放入onClick()
处理程序中。由于Android的对话是不同步的,则需要在对话框回调本身执行保存操作。这不是可以显示一个对话框,等待用户响应,然后拿从对话框的结果。
我明白你的意思,但这样做很不合逻辑,而不是一个“整齐”的编码,不可能是其他方式,然后推动okClick内的一切? – rayman 2010-01-29 12:42:57