我正在使用以下代碼來顯示AlertDialog並提示用戶按「重試」。對話框應保持在屏幕上,直到連接可用。該應用程序工作正常,當網絡不可用時,該對話框出現。如何在網絡不可用時在屏幕上保留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();
}
});
setCancelable(false)方法不起作用 – JasonStack
您的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
使用這種LIB編譯 'com.github.nikhilborad:basehelp:1.02' 有法nbShowNoInternet()..多數民衆贊成。 –