如何在网络不可用时在屏幕上保留AlertDialog
我正在使用以下代码来显示AlertDialog并提示用户按“重试”。对话框应保持在屏幕上,直到连接可用。该应用程序工作正常,当网络不可用时,该对话框出现。如何在网络不可用时在屏幕上保留AlertDialog
问题是,只要我触摸屏幕上某处或按下重试,对话框就会被解除!我怎样才能防止呢?
回答:
您可以使用setCanceledOnTouchOutside(false)
。
AlertDialog mDialog = builder.create(); mDialog.setCanceledOnTouchOutside(false);
mDialog.show();
但是,这将防止只有外部触摸不正面或负面按钮点击。其AlertDialog的默认行为是关闭任何按钮上的对话框,不管您是否拨打dismiss()
。所以,如果你想要超越这种行为,你可以做这样的事情。
AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Not Connected")
.setIcon(R.drawable.ic_play_icon)
.setView(R.layout.item_dialog)
.setCancelable(false)
.setMessage("You are not connected to the Internet");
final AlertDialog mDialog = builder.create();
mDialog.setCanceledOnTouchOutside(false);
mDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialogInterface) {
Button button = mDialog.getButton(AlertDialog.BUTTON_POSITIVE);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Do your validations task here
}
});
}
});
mDialog.show();
回答:
setCancelable(false)将为您工作。
AlertDialog.Builder builder = new AlertDialog.Builder(MainGroupActivity.this); builder.setTitle("Not Connected")
.setIcon(R.drawable.disconnect)
.setView(mProgressBar)
.setCancelable(false)
.setMessage("You are not connected to the Internet")
.setPositiveButton("Retry", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//Retry connection
if(isNetworkAvailable())
mDialog.dismiss();
}
});
回答:
您的alertDialog
建设添加setCancelable(false)
。
mProgressBar = new ProgressBar(MainGroupActivity.this); AlertDialog.Builder builder = new AlertDialog.Builder(MainGroupActivity.this);
builder.setTitle("Not Connected")
.setIcon(R.drawable.disconnect)
.setView(mProgressBar)
.setMessage("You are not connected to the Internet")
.setCancelable(false)
.setPositiveButton("Retry", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//Retry connection
if(isNetworkAvailable())
mDialog.dismiss();
}
});
mDialog = builder.create();
if(!isNetworkAvailable())
mDialog.show();
回答:
为了防止对话框从得到驳回返回键按下使用这种
dialog.setCancelable(false);
此外,要防止对话框,从得到驳回外触摸使用
dialog.setCanceledOnTouchOutside(false);
以获得更多帮助看看这个问题: Prevent Android activity dialog from closing on outside touch
以上是 如何在网络不可用时在屏幕上保留AlertDialog 的全部内容, 来源链接: utcz.com/qa/265267.html