2017-12-27 8 views
0

다음 코드를 사용하여 AlertDialog를 표시하고 "재시도"를 누르라는 메시지를 표시합니다. 연결이 가능할 때까지 대화 상자가 화면에 남아 있어야합니다. 네트워크를 사용할 수 없으면 대화 상자가 나타납니다.네트워크를 사용할 수없는 동안 AlertDialog를 화면에 유지하는 방법

문제는 대화 상자가 화면 어딘가에 닿거나 재시도 버튼을 누르면 바로 해제된다는 것입니다. 어떻게 방지 할 수 있습니까?

+0

사용이 lib에 컴파일 'com.github.nikhilborad : basehelp : 1.02'이 방법 nbShowNoInternet() ...을 가지고 모든 이잖아. –

답변

1

setCanceledOnTouchOutside(false)을 사용할 수 있습니다.

하지만 외부 터치 만 긍정적이거나 부정적인 버튼 클릭을 방지합니다. 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();