没有按钮的Android对话框

时间:2013-08-01 12:35:34

标签: android

我可以创建一个没有负面或正面按钮的对话框。在具体行动后,这会摧毁它自己吗?

 AlertDialog.Builder dialog_detect= new AlertDialog.Builder(MainActivity.this);
 dialog.setTitle("Detecting.....");
 dialog.setMessage("Please Wait");
 dialog.show();

9 个答案:

答案 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();