2015-04-01 34 views
1

我目前正在編寫一個android應用程序,現在是時候實施通知了。我將在這裏看到的三個活動是MainActivity,MessageListActivity和MessageActivity。帶有通知的活動導航

這些都採用簡單的A> B> C格式。 B的父母設置爲A,C的父母設置爲B.正常的導航工作正常,並按預期做一切事情。這裏是下面的清單:

<activity 
     android:name=".activities.MainActivity" 
     android:label="@string/app_name" 
     android:launchMode="singleTop" 
     android:screenOrientation="portrait" > 
    </activity> 

    <activity 
     android:name=".activities.MessageListActivity" 
     android:icon="@drawable/ic_action_email" 
     android:label="@string/title_activity_text" 
     android:launchMode="singleTop" 
     android:parentActivityName=".activities.MainActivity" 
     android:screenOrientation="portrait" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value=".activities.MainActivity" /> 
    </activity> 

    <activity 
     android:name=".activities.MessageActivity" 
     android:icon="@drawable/ic_action_read" 
     android:label="@string/title_activity_text_message" 
     android:parentActivityName=".activities.MessageListActivity" 
     android:screenOrientation="portrait" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value=".activities.MessageListActivity" /> 
    </activity> 

的問題是我現在想要實現的通知,如果我出它作爲服務運行,所以我仍然可以接收郵件的應用程式。當收到一條新消息時,彈出窗口會顯示出來,我想點擊它,顯示MessageActivity(C),然後當向上或向後按下時返回MessageListActivity(B)。但是,我打開通知並按預期顯示了MessageActivity(C),但是當我向上或向後按下時,它將我帶到MainActivity(A)。它應該在這一點返回到MessageListActivity(B)!

澄清: -

  • 通知出現
  • 用戶點擊它
  • 開出信用證
  • 用戶按下回或向上
  • B應該在現在開放的,但A打開來代替。

我在通知中創建一個堆棧中,如下圖所示:

Intent resultIntent = new Intent(NurseCallApplication.getContext(), MessageActivity.class); 
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(NurseCallApplication.getContext()); 
    stackBuilder.addParentStack(MessageActivity.class); 
    stackBuilder.addNextIntent(resultIntent); 

    resultIntent.putExtra("messageObject", message); 
    PendingIntent resultPendingIntent = PendingIntent.getActivity(NurseCallApplication.getContext(), 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

而且在我MessageActivity(C)並後退按鈕我有:

NavUtils.navigateUpFromSameTask(this); 

在這點我真的只是把各種各樣的想法弄清楚,所以如果有不必要的部分,請原諒我!任何幫助將大規模讚賞!謝謝!

回答

0

我覺得你的錯誤將與此解決:

// B -> C when user clicks any notification 

stackBuilder.addParentStack(MessageListActivity.class); 
0

試試這個

Intent resultIntent = new Intent(NurseCallApplication.getContext(), MessageActivity.class); 
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(NurseCallApplication.getContext()); 
    stackBuilder.addParentStack(MessageActivity.class); 
    stackBuilder.addNextIntent(resultIntent); 

resultIntent.putExtra("messageObject", message);    
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);