【问题标题】:Activity Navigation with Notifications带通知的活动导航
【发布时间】:2015-04-01 19:20:16
【问题描述】:

我目前正在编写一个 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)!

澄清:-

  • 出现通知
  • 用户点击它
  • C 已打开
  • 用户按返回或向上键
  • B 现在应该打开,但 A 打开。

我在通知中创建了一个 backstack,如下所示:

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

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

【问题讨论】:

    标签: java android notifications


    【解决方案1】:

    我认为你的错误会解决这个问题:

    // B -> C    when user clicks any notification
    
    stackBuilder.addParentStack(MessageListActivity.class);
    

    【讨论】:

      【解决方案2】:

      试试这个

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-22
        相关资源
        最近更新 更多