Android 如何在onClick方法上添加警报对话框?

Android 如何在onClick方法上添加警报对话框?,android,mobile,onclick,android-alertdialog,Android,Mobile,Onclick,Android Alertdialog,我想添加一个警报对话框,以便在执行请求时具有加载状态。是否可以执行以下操作: xButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { xButton.setVisibility(View.INVISIBLE); AlertDialog alertDialog = new AlertDialog.Builder(t

我想添加一个警报对话框,以便在执行请求时具有加载状态。是否可以执行以下操作:

xButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        xButton.setVisibility(View.INVISIBLE);

        AlertDialog alertDialog = new AlertDialog.Builder(this).create(); 
        alertDialog.setMessage(Please wait);
        alertDialog.show();

        // do some work here
        alertdialog.dismiss

    }
});

        }
        return view;     

提前感谢

使用函数显示警报并从onclick函数调用

public void showAlert() {
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                mcontext);

        // set title
        alertDialogBuilder.setTitle("Headding");

        // set dialog message
        alertDialogBuilder.setMessage("message")
                .setCancelable(false)
                .setPositiveButton(mcontext.getResources().getString(R.string.Ok), new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
//                      
                    }
                });
        // create alert dialog
        AlertDialog alertDialog = alertDialogBuilder.create();
        // show it
        alertDialog.show();
    }

嗨,Adrian给出了一个简单的代码,希望这能有所帮助。你好

AlertDialog.Builder alertDialog=new AlertDialog.Builder(context);
                        alertDialog.setTitle("title");
                        alertDialog.setIcon(R.drawable.alert_image);
                        alertDialog.setMessage("alert message").setCancelable(false).setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,int id) {
                                current_activity.this.finish();
                                Intent inlog=new Intent(current_activity.this,target_activity.class);
                                startActivity(inlog);
                            }
                        })
                        .setNegativeButton("No", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,int id) 
                            {
                                dialog.cancel();
                            }
                        });

                        AlertDialog alertDialog2=alertDialog.create();
                        alertDialog2.show();

如果您没有任何特定的理由使用警报对话框,则可以使用进度对话框

@Override
public void onClick(View v) {
    xButton.setVisibility(View.INVISIBLE);

            new AsyncTask<Void, Void, Void>(){

                    ProgressDialog mProgressDialog;
                    @Override
                    protected void onPreExecute() {
                        super.onPreExecute();
                        mProgressDialog = new ProgressDialog(<YourActivityClassName>.this);
                        mProgressDialog.setMessage("message");
                        mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
                        mProgressDialog.setCancelable(false);
                        mProgressDialog.show();
                    }

                    @Override
                    protected Void doInBackground(Void... params) {
                        // Do your work
                        return null;
                    }

                    protected void onPostExecute(Void result) {
                        super.onPostExecute(result);
                        mProgressDialog.dismiss();
                    };

                }.execute();


}
@覆盖
公共void onClick(视图v){
xButton.setVisibility(视图不可见);
新建异步任务(){
进程对话框;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
mProgressDialog=新建进度对话框(.this);
设置消息(“消息”);
mProgressDialog.setProgressStyle(ProgressDialog.STYLE\u微调器);
mProgressDialog.setCancelable(假);
mProgressDialog.show();
}
@凌驾
受保护的Void doInBackground(Void…参数){
//做你的工作
返回null;
}
受保护的void onPostExecute(void结果){
super.onPostExecute(结果);
mProgressDialog.disclose();
};
}.execute();
}

u需要自定义对话框或默认对话框UE您应该在这种情况下使用AsyncTask和ProgressDialog如果您使用AsyncTask,您可以从preExecute/PostExecuteJ调用它,必须将它放在onclick中,或者在函数中使用它并在onclick中调用它()我在onclick方法中添加了它,AlertDialog alert=新建AlertDialog.Builder(context.create();警报。设置消息(“请稍候…”);警报。可设置可取消(错误);alert.show()//做一些工作警惕。解散();问题是,它根本不显示它。如果我解除警报。解除();警报对话框在那里,但它保持在那里。有什么想法吗?提前谢谢。@AdrianAntal此警报有两个按钮,因此单击其中一个按钮将执行操作,警报将被解除。如果您需要在特定间隔后自动解除警报,可以使用Progressdialog而不是alertdialog,或者只需使用Toast.Hi Wolfrine。谢谢你的回复。我之所以使用警报对话框,是因为我不允许用户在处理请求时点击任何按钮。我可以用ProgressDialog做同样的事情吗?提前谢谢。@AdrianAntal:您已经有了进度对话框的答案:)嗨,Naveejr,尝试了您的代码,我经历了一次崩溃06-27 11:35:28.780 30227-30227/com.xxx.xxx E/WindowManager﹕ android.view.WindowLeaked:Activity com.xxx.xxx.main Activity已经泄漏了最初添加到这里的window com.android.internal.policy.impl.PhoneWindow$DecorView{42deaf08 V.E..R..D 0,0-1061288}有什么原因吗?提前谢谢你。另外,我正在使用Android StudioAdrian@AdrianAntal我已经修改了代码,请立即尝试并告诉我结果。发生一些崩溃:06-27 13:55:21.934 11382-11382/com.xxx.xxx E/WindowManager﹕ android.view.WindowLeaked:Activity com.xxx.xxx.main Activity已泄漏最初添加到此处的window com.android.internal.policy.impl.PhoneWindow$DecorView{42c11da0 V.E…..R….D 0,0-1061288},提前谢谢