我可以创建一个没有负面或正面按钮的对话框。在具体行动后,这会摧毁它自己吗?
AlertDialog.Builder dialog_detect= new AlertDialog.Builder(MainActivity.this);
dialog.setTitle("Detecting.....");
dialog.setMessage("Please Wait");
dialog.show();
答案 0 :(得分:13)
你可以很容易地做到这一点。
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
// set title
alertDialogBuilder.setTitle("Your Title");
// set dialog message
alertDialogBuilder.setMessage("Message here!").setCancelable(false);
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
// After some action
alertDialog.dismiss();
如果您在其他地方有AlertDialog
的引用,您仍然可以致电alertDialog.dismiss()
。这将关闭对话框。
答案 1 :(得分:4)
真正取决于正在执行的“行动”:
AlertDialog.Builder dialog_detect= new AlertDialog.Builder(MainActivity.this);
dialog.setTitle("Detecting.....");
dialog.setMessage("Please Wait");
dialog.show();
timeConsumingDetectMethod();
dialog.dismiss();
这样您就可以在timeConsumingDetectMethod()
完成之前获得冻结的用户界面。
但是,以下方式在后台运行操作,同时显示响应非常快的对话框。此外,取消对话框取消时的操作。
AsyncTask<Void,Void,Void> task = new AsyncTask<Void, Void, Void>() {
private AlertDialog dialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog= new AlertDialog.Builder(MainActivity.this);
dialog.setTitle("Detecting.....");
dialog.setMessage("Please Wait");
dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
cancel(true);
}
});
dialog.show();
}
@Override
protected Void doInBackground(Void... voids) {
timeConsumingDetectMethod();
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
dialog.dismiss();
}
}.execute();
答案 2 :(得分:2)
您可以在执行任何操作后致电alertDialog .dismiss ()
。
答案 3 :(得分:2)
你也可以像这样编写crocboy的代码:
AlertDialog alertDialog = new AlertDialog.Builder(context)
.setTitle("Your Title")
.setMessage("Message here!")
.setCancelable(false)
.create();
alertDialog.show();
// After some action
alertDialog.dismiss();
它完全相同,它更紧凑。
答案 4 :(得分:1)
您可以在Dialog上尝试自定义对话框设计,并将其用作您希望使用它们
final Dialog dialog= new Dialog(context);
dialog.setContentView(R.layout.pre_confirmation_dailog);
dialog.setTitle("Details...");
dialog.show();
答案 5 :(得分:0)
显示对话框: -
ProgressDialog pd = ProgressDialog.show(context,"TITLE","MSG");
解雇
pd.dismiss();
答案 6 :(得分:0)
实现一个计时器并将其设置为在几秒钟后关闭DialogBox。
答案 7 :(得分:0)
您可以根据需要尝试自定义对话框
Dialog dialog_help = new Dialog(this);
dialog_help.setContentView(R.layout.title_multi_selectitems_dialog);
EditText et_1 = (EditText) dialog_help.findViewById(R.id.et_help_1);
dialog_help.setCancelable(true);
dialog_help.setTitle(" Help ");
dialog_help.setCanceledOnTouchOutside(true);
dialog_help.show();
dialog_help.getWindow().setGravity(Gravity.CENTER);
dialog_help.getWindow().setLayout(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);
答案 8 :(得分:0)
crocboy's answer的正确代码是:
AlertDialog.Builder builder = new AlertDialog.Builder(context);
// set title
builder.setTitle("Your Title");
// set dialog message
builder.setMessage("Message here!").setCancelable(false);
// create alert dialog
AlertDialog alertDialog = builder.create();
// show it
alertDialog.show();
// After some action
alertDialog.dismiss();