2013-02-27 6 views
0

내 문제는 다음과 같습니다. 내가받은 알림을 누르면 일부 활동이 열리고 활동 번호 3이 표시됩니다.하지만 뒤로 버튼을 누르면 안드로이드로 이동합니다. 메뉴. 내가 원하는 것은 사용자의 올바른 탐색 경험을 유지하는 것이며, 뒤로 버튼을 누르면 활동 번호 2로 이동하게되고, 뒤로 버튼을 누르면 거기로 이동합니다. 활동 번호 1 등등.
또 다른 문제점은 활동 번호 2를 열 때 거기에 추가 데이터를 설정해야하지만 설정 방법을 모르겠습니다.
내 문제 요약 : 사용자의 정확한 내비게이션을 유지하고 뒤로 버튼 클릭으로 열리는 활동에 대한 일부 추가 기능을 설정하십시오.알림을 클릭하는 동안 활동을 보존합니다.

NotificationCompat.Builder mBuilder = 
       new NotificationCompat.Builder(this) 
       .setSmallIcon(R.drawable.ic_launcher) 
       .setContentTitle("New Question") 
       .setContentText("" + CurrentQuestion.getAuthor().getUserName() + ": " + CurrentQuestion.getQuestion() + ""); 

     Intent openHomePageActivity = new Intent("com.example.ihelp.HOMEPAGEACTIVITY"); 
     TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
     stackBuilder.addNextIntent(openHomePageActivity); 
     PendingIntent resultPendingIntent = 
       stackBuilder.getPendingIntent(
        0, 
        PendingIntent.FLAG_UPDATE_CURRENT 
       ); 
     mBuilder.setContentIntent(resultPendingIntent); 
     NotificationManager mNotificationManager = 
      (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     mNotificationManager.notify(0, mBuilder.build()); 

감사 :

여기 내 알림 코드입니다!

+0

재정 onBackPressed에서 할 원하는 활동 – Ajit

+0

로 이동하는 코드를 추가하지만이 문제를하지 않습니다 무엇인가? 왜냐하면 내가 뒤로 버튼을 누르면 멈추었 던 마지막 활동으로 갈 것이기 때문입니다. 그러나 뒤로 버튼을 누르고 onBackPressed()를 재정의하면 나에게 새로운 액티비티가 열리고 중지 된 마지막 액티비티가 재개되지 않습니다. 그리고 내가 원하는 것은 뒤로 버튼을 누를 때마다 일어납니다. –

+0

다음 옵션을 시도합니다 : 알림을 누르면 활동 번호 1이 열리고 바로 2 번으로 이동 한 다음 바로 이동합니다. 3 번을 클릭하면 활동 번호 3에서 '뒤로'버튼을 클릭하면 활동 번호 2로 돌아갑니다.주의해야 할 유일한 것은이 경우 모든 활동이 활동 1 번에 대해 생성되지 않는다는 것입니다 & 2. 속도 때문에 숫자 3을 열기 전에 사용자가 방금 활동 1 및 2에 있었던 것처럼 느껴지지 않을 것입니다. – sromku

답변

0

onSaveInstanceState &에서 필요한 매개 변수를 onRestoreInstanceState에 저장하십시오. 그렇게하면 다른 알림에 의해 활동이 일시 중지되었는지도 중요하지 않습니다. 당신이 다시 스택 합성 할 같은

+0

몇 가지 코드를 보여줄 수 있습니까? 그래서 나는 그것을 더 잘 이해할 것이다. 이 기능을 어디에 넣어야합니까? –

+0

여기의 예를 참조하십시오. http://stackoverflow.com/questions/151777/saving-activity-state-in-android –

0

같은 시나리오의 모든 사용자가 내 앱에서 사용하는이 솔루션을 사용할 수 있습니다. 알림에서 라우팅 된 활동 내에서 onBackPressed를 재정의하고 앱이 스택에 있는지 확인합니다. 그렇지 않다면 루트 활동을 시작하십시오. 사용자는 항상 루트 활동을 탐색 할 수 있습니다. 이것은 내가() 메소드 내 애플 리케이션

@Override 
public void onBackPressed() { 
    if (isTaskRoot()) { 
     Intent intent = new Intent(this,YourMainActivity.class); 
     startActivity(intent); 
     super.onBackPressed(); 
    }else { 
     super.onBackPressed(); 
    } 
} 
관련 문제