2017-12-27 183 views
0

我正在使用以下代碼來顯示AlertDialog並提示用戶按「重試」。對話框應保持在屏幕上,直到連接可用。該應用程序工作正常,當網絡不可用時,該對話框出現。如何在網絡不可用時在屏幕上保留AlertDialog

問題是,只要我觸摸屏幕上某處或按下重試,對話框就會被解除!我怎樣才能防止呢?

+0

使用這種LIB編譯 'com.github.nikhilborad:basehelp:1.02' 有法nbShowNoInternet()..多數民衆贊成。 –

回答

1

您可以使用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(); 
1

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(); 
       } 
      }); 
+0

setCancelable(false)方法不起作用 – JasonStack

0

您的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(); 
相關問題