2015-04-01 69 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);