switch语句中的Android AlertDialog.Builder

时间:2011-08-22 17:43:23

标签: android

我认为标题说明了一切。我是Android和JAVA的新手,我想知道是否可以将 AlertDialog.Builder 用于switch语句。

例如,我如何在这里使用它:

case Activity.RESULT_OK:

break;

我只想让用户知道操作已完成并成功,他只需要按“确定”按钮即可。

非常感谢!

PS:我已导入:

import android.app.AlertDialog.Builder;

2 个答案:

答案 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