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},提前谢谢