片段人工靠背

时间:2017-04-19 05:48:58

标签: android fragmenttransaction

我正在尝试在通知栏打开通知后创建人工背包。

打开通知后的工作流程:

  1. 点击通知后,会触发打开MainActivity的Intent。
  2. 打开MainActivity后,我会检查if(getArguments != null)。如果它不为null,我打开通知片段并传递收到的通知ID。
  3. 如果通知if(id != -1)我打开通知片段。
  4. 问题是点击后退按钮后我会直接进入MainActivity窗口,跳过Notifications片段。

    我打开通知片段:

     Fragment frag = new NotificationFragment();
     frag.setArguments(bundle);
     FragmentTransaction ft =getSupportFragmentManager().beginTransaction();
     ft.add(R.id.container, NotificationsFragment.getInstance(null, id)).commit();
    

    我打开这样的通知片段:

    FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
    NotificationFragment notificationFragment =  new NotificationFragment();
    Bundle bundle =  new Bundle();
    bundle.putInt("id", getArguments().getInt("id"));
    notificationFragment.setArguments(bundle);
    ft.add(R.id.container, notificationFragment).addToBackStack(null).commit();
    

    R.id.container是FrameLayout使用的sor显示片段。  我正在使用支持librrary。

    我读到FragmentTransaction.replace()删除所有现有片段并添加新片段。 FragmentTransaction.add()将它们添加到活动状态。

    请有人纠正我的错误并告诉我正确的方法。

1 个答案:

答案 0 :(得分:2)

更改此

     Fragment frag = new NotificationFragment();
 frag.setArguments(bundle);
 FragmentTransaction ft =getSupportFragmentManager().beginTransaction();
 ft.add(R.id.container, NotificationsFragment.getInstance(null, id)).commit();

     Fragment frag = new NotificationFragment();
 frag.setArguments(bundle);
 FragmentTransaction ft =getSupportFragmentManager().beginTransaction();
 ft.add(R.id.container, NotificationsFragment.getInstance(null, id)).addToBackStack(null).commit();

基本上,您不是要向Backstack添加Notifications Fragment,这就是为什么当点击返回时,MainActivity会出现。