startActivity创建一个新的Activity而不是带到前面(标志集)

时间:2013-05-28 18:51:03

标签: android android-intent actionbarsherlock fragment

想象一下两个活动A和B.

  1. A启动活动B(将位于靠背顶部)
  2. 创建一个待定意图并将其附加到允许返回新活动B的通知。设置标志FLAG_ACTIVITY_REORDER_TO_FRONT以便只拥有一个活动B(我们在步骤1中创建的活动)

  3. 我退出应用程序,打开通知栏,然后点击我的通知。我希望我回到步骤1中创建的活动B.嗯..它创建一个新的活动B,把它放在后台的顶部。什么!?我不明白这种行为!

  4. 现在关于这一点的更多细节可能很重要(我能检测到臭虫的味道吗?):

    • 步骤1和2在活动A具有的片段中执行。

    • 我使用支持v4库,该活动是SherlockFragmentActivity的扩展,实现了ActionBar.TabListener

    以下是代码片段:

    //Activity B creates and showed
    Intent i = new Intent(getActivity(), B.class);
    getActivity().startActivity(i);
    
    Intent notificationIntent = new Intent(getActivity(), Prova2.class);
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    notificationIntent.putExtra("test", "hi I'm a test");
    
    PendingIntent contentIntent = PendingIntent.getActivity(getActivity(), 0, notificationIntent, 0);
    String n = MyApplication.getAppContext().NOTIFICATION_SERVICE;
    NotificationManager nm= (NotificationManager) getActivity().getSystemService(n);
    
    Notification notification = new Notification(R.drawable.icon, "test", System.currentTimeMillis());
    notification.setLatestEventInfo(MyApplication.getAppContext(), "testtitle", "texttest",
                        contentIntent);
    notification.defaults = Notification.DEFAULT_SOUND;
    notification.flags = Notification.FLAG_AUTO_CANCEL;
    
    nm.notify(1, notification);
    

1 个答案:

答案 0 :(得分:1)

Flag设置notificationIntent而非Intent设置ActivityB。改变这个

 Intent i = new Intent(getActivity(), B.class);
 getActivity().startActivity(i);

   Intent i = new Intent(getActivity(), B.class);
   i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
   getActivity().startActivity(i);

Google I/O Navigation此链接非常有助于理解堆栈的工作原理