2012-05-30 3 views
0

응용 프로그램이 백그라운드로 들어가기 직전에이 응용 프로그램을 종료할지 묻는 대화 상자가 나타납니다. 그리고 사용자가 아니오를 선택하면 다른 응용 프로그램을 시작하는 대신 내 응용 프로그램으로 다시 시작해야합니다. 그래서 안드로이드에서 가능합니까? 한 용액 내가 onresume()가 onpause () 안의 또는 이동 중지()가 나누었다이 수행 될 수 을 부르는이 같을 수있다. 도와주세요.Android : onpause() 내에서 내 onresume()을 호출 할 수 있습니까?


내 코드는 다음과 같다 : - 우선은 기본적으로는 onpause의 호출() 또는하지에서 실행되는 경우보고 싶어

public void onPause() { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setMessage("Do you want to quit"); 
     builder.setCancelable(false); 
     builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      MytestprojectActivity.this.finish(); 
     } 
    }); 

     builder.setNegativeButton("No", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.cancel(); 
     } 
    }); 

     AlertDialog alert = builder.create(); 
     alert.show(); 
     super.onPause(); 
} 

. 그래서 내가 가진 것은 내 활동을 일시 중지하고 다른 활동으로 이동 한 다음 내 활동이 다시 시작되면 대화 상자를 표시한다는 것입니다. 나는 뭔가를 놓친다.

+0

뒤로 버튼이나 홈 버튼을 무시하고 원하는대로 할 수 있습니다. onpause()는 앱의 상태를 저장하기 위해 예약되어 있으므로 onstop()은이를 마무리하기 위해 예약되어 있으므로 대신 onresume()을 호출하면 나쁜 해결책이됩니다. – user1049280

+0

http://stackoverflow.com/questions/6748763/call-alertdialog-onstop- onphause – Krishnabhadra

+2

이 모든 것은 말하기를,이 일을 극단적으로 나쁜 애플 리케이션 행동이다. onPause에 게임/앱의 상태를 저장 한 다음 onResume에서 다시 시작해야합니다. –

답변

0

이것은 매우 간단하다 :

public void onBackPressed() { 

     final Builder builder = new Builder(this); 
     builder.setTitle(R.string.caption); 
     builder.setMessage("Do you really want to exit?"); 
     builder.setPositiveButton(android.R.string.ok, new OnClickListener() { 
      @Override 
      public void onClick(final DialogInterface dialog, final int which) { 
       Intent intent = new Intent(YourActivity.this, YourActivity.class); 
        intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 

        startActivity(intent); 
        YourActivity.this.finish(); 
        dialog.dismiss(); 

      } 
     }); 
     builder.setNegativeButton(android.R.string.cancel, 
       new OnClickListener() { 
        @Override 
        public void onClick(final DialogInterface dialog, 
          final int which) { 
                dialog.dismiss(); 
        } 
       }); 
     final AlertDialog dialog = builder.create(); 
     dialog.show(); 

}

이 문제 :)

UPDATE를 해결해야 앱이 백그라운드에서 진행되는 경우는, onPause()가 확실히 호출됩니다. 그러므로이 대화 상자를 onPause()에 작성하고 onClick을 intent.FLAG_ACTIVITY_REORDER_TO_FRONT와 같은 의도로 startActivity()를 호출합니다.

+0

답변을 주셔서 감사합니다.하지만 위의 내 의견을 읽으면 u가 정확히 무엇을 원하는지 알게됩니다. 그래서, 유익한 대답을 줄 수 있다면. – prabhanshu

+0

업데이트 된 코드가 문제를 해결해야한다고 생각합니다. – Shrikant

+0

아니요 작동하지 않습니다. onpause() 안에 쓰면 대화 상자가 표시되지 않고 대신 정상 onpause 호출로 전환됩니다. : – prabhanshu

관련 문제