2014-11-22 1 views
0

내 응용 프로그램에 두 개의 경고 대화 상자가 있습니다.Yes 버튼을 클릭했을 때 alertdialog를 해제하고 BackPressed에서 다시 표시하지 않으려면 어떻게해야합니까?

1은 종료 응용 프로그램 용이고 다른 하나는 URL로 리디렉션 용입니다.

대화 상자에 대화 상자가 표시되었습니다.

첫 번째 대화 상자가 팝업되면 사용자가 URL을 리디렉션 할 때 URL이 리디렉션됩니다.

하지만 사용자가 뒤로 버튼을 누르면 취소해야하고 뒤로 버튼 클릭시 종료 대화 상자 만 표시하려고합니다.

여기 내 코드입니다.

boolean flag = false; 

@Override 
public void onBackPressed() { 
    if (flag) { 
     super.onBackPressed(); 

    } else { 
     final AlertDialog.Builder alert = new AlertDialog.Builder(
       MainActivity.this); 
     alert.setMessage("EXIT"); // Message 
                       // here 

     alert.setPositiveButton("NO", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, 
          int whichButton) { 
         AlertDialog.Builder exitdialog = new AlertDialog.Builder(
           MainActivity.this); 
         exitdialog 
           .setMessage("EXIT"); 
         exitdialog.setTitle(R.string.app_name); 
         exitdialog.setIcon(R.drawable.logo); 
         exitdialog.setPositiveButton("NO", 
           new OnClickListener() { 

            @Override 
            public void onClick(
              DialogInterface dialog, 
              int which) { 

            } 
           }); 
         exitdialog.setNegativeButton("Yes", 
           new OnClickListener() { 

            @Override 
            public void onClick(
              DialogInterface dialog, 
              int which) { 
             /* 
             * Intent i=new 
             * Intent(getApplicationContext 
             *(),MainActivity.class); 
             * startActivity(i); 
             */ 

             finishFromChild(getParent()); 
             getIntent() 
               .setFlags(
                 Intent.FLAG_ACTIVITY_CLEAR_TOP); 
             finish(); 
            } 
           }); 
         AlertDialog alertDialog = exitdialog.create(); 
         alertDialog.show(); 

        } 
       }); 

     alert.setNegativeButton("YES", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, 
          int whichButton) { 

         Intent viewTwitter = new Intent(
           "android.intent.action.VIEW", 
           Uri.parse("URL")); 
         startActivity(viewTwitter); 
         overridePendingTransition(R.anim.fadein, 
           R.anim.fadeout); 

        } 

       }); 
     final AlertDialog alertDialog = alert.create(); 
     alertDialog.show(); 

    } 
+0

내가 응용 프로그램을 종료 할 수 있어요 대답 – Furqan

답변

0

finish(); 기본 동작을 제거하는 것은 onClick 방법

에게 옆에 편집dialog.dismiss();을 넣어 dismiss입니다 는 flag = true;

boolean flag = false; 

@Override 
public void onBackPressed() { 
if (flag) { 
    super.onBackPressed(); 

} else { 
    final AlertDialog.Builder alert = new AlertDialog.Builder(
      MainActivity.this); 
    alert.setMessage("EXIT"); // Message 
                      // here 

    alert.setPositiveButton("NO", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, 
         int whichButton) { 
        AlertDialog.Builder exitdialog = new AlertDialog.Builder(
          MainActivity.this); 
        exitdialog 
          .setMessage("EXIT"); 
        exitdialog.setTitle(R.string.app_name); 
        exitdialog.setIcon(R.drawable.logo); 
        exitdialog.setPositiveButton("NO", 
          new OnClickListener() { 

           @Override 
           public void onClick(
             DialogInterface dialog, 
             int which) { 

           } 
          }); 
        exitdialog.setNegativeButton("Yes", 
          new OnClickListener() { 

           @Override 
           public void onClick(
             DialogInterface dialog, 
             int which) { 
            /* 
            * Intent i=new 
            * Intent(getApplicationContext 
            *(),MainActivity.class); 
            * startActivity(i); 
            */ 

            finishFromChild(getParent()); 
            getIntent() 
              .setFlags(
                Intent.FLAG_ACTIVITY_CLEAR_TOP); 
            finish(); 
           } 
          }); 
        AlertDialog alertDialog = exitdialog.create(); 
        alertDialog.show(); 

       } 
      }); 

    alert.setNegativeButton("YES", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, 
         int whichButton) { 
      flag= true; 

        Intent viewTwitter = new Intent(
          "android.intent.action.VIEW", 
          Uri.parse("URL")); 
        startActivity(viewTwitter); 
        overridePendingTransition(R.anim.fadein, 
          R.anim.fadeout); 

       } 

      }); 
    final AlertDialog alertDialog = alert.create(); 
    alertDialog.show(); 

} 
+0

을 편집 해 볼 설정하지만, 내가 원하는 팝업되는 첫 번째 대화 상자를 닫습니다. 두 번째로 열려면 누르지 마십시오. –

+0

나는 flag = true를 수행하는 동안 종료 대화 상자를 열지 않는 앱을 ​​직접 닫습니다. –

+0

나는 이것에 정말로 가깝다. –

관련 문제