我认为标题说明了一切。我是Android和JAVA的新手,我想知道是否可以将 AlertDialog.Builder 用于switch语句。
例如,我如何在这里使用它:
case Activity.RESULT_OK:
break;
我只想让用户知道操作已完成并成功,他只需要按“确定”按钮即可。
非常感谢!
PS:我已导入:
import android.app.AlertDialog.Builder;
答案 0 :(得分:4)
可能就像你想要的那样简单......例如:
case Activity.RESULT_OK:
new AlertDialog.Builder(this)
.setMessage("Message")
.setPositiveButton("OK", null)
.create()
.show();
break;
但是,推荐的方法是使用showDialog(int)
方法:
case Activity.RESULT_OK:
showDialog(YOUR_DIALOG_ID);
break;
然后,覆盖onCreateDialog
方法:
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case YOUR_DIALOG_ID:
return new AlertDialog.Builder(this)
.setMessage("Message")
.setPositiveButton("OK", null)
.create();
}
return super.onCreateDialog(id);
}
YOUR_DIALOG_ID
只是一个整数常量。 为什么推荐这个?很高兴你问。如果您这样做,Android会在重新创建活动时知道您正在显示对话框(例如,当用户更改设备的方向时),因此将重新创建(当您手动显示时不会发生这种情况)除非你处理配置改变你的自我(我认为你没有做(也没有更多的括号))))。
答案 1 :(得分:1)
只要您的代码返回到UI管理器,就可以执行该对话。 请记住,当您从方法返回到UI管理器时,不是您的代码实际绘制Dialogs和Toasts,只发生在您的代码之外。
以下是您应该和不应该做的事情的示例:
//in response of an OnClick method
public void onClick(View v) {
switch(v.getId())
{
case MYBUTTON1ID:
{
// show my alert here whatever method
MyShowAlert("Something wrong.. hit OK to continue");
DoSomethingMore(); // << this is WRONG!!, would happen BEFORE your alertdialog
DoSomethingEvenMore(); // << wrong either
break;
}
case MYBUTTONID2:
{
DoSomething(); // << ok here
MyShowAlert("Ok, this would work");
break; // << here we return to UI showing alert
}
}
}
如果您需要执行MYBUTTON1ID中显示的模式,最好学习AsyncTask,读取here