java - 带通知的 Activity 导航

标签 java android notifications

我目前正在编写一个 Android 应用程序,是时候实现通知了。我将在这里查看的三个 Activity 是 MainActivity、MessageListActivity 和 MessageActivity。

这些采用简单的 A > B > C 格式。将 B 的父级设置为 A,将 C 的父级设置为 B。正常导航工作正常,并且按预期执行所有操作。以下是 list :

    <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)!

澄清一下:-

  • 出现通知
  • 用户点击它
  • C 已打开
  • 用户按后退或向上键
  • 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);

在这一点上,我真的只是把所有的东西放在一起试图弄清楚,所以如果有不必要的部分,请原谅我!任何帮助将不胜感激!谢谢!

最佳答案

我认为您的错误可以通过以下方式解决:

// B -> C    when user clicks any notification

stackBuilder.addParentStack(MessageListActivity.class);

关于java - 带通知的 Activity 导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29387044/

相关文章:

android - 无法在 Anko 中预览

java - Iphone 应用程序移植到 Blackberry RIM

javascript - 是否有一个YUI模块可以帮助我实现通知,例如Stack Exchange网站在屏幕顶部使用的通知?

java - 如何从 Appium 中的推送通知获取 JSON 数据?

java - 图形drawImage的问题

java - 'filename' 中的 UTF-8 字符对于 'Content-Disposition' 产生 "IllegalArgumentException: Unexpected char"

java - 匹配 ":"之后包含的字符串的正则表达式

java - 注入(inject)实例上的 Guice 空指针异常

android - 获取按钮内的文本

iphone - 应用程序未出现在设置中的 "Notifications"下