我正在尝试在通知栏打开通知后创建人工背包。
打开通知后的工作流程:
if(getArguments != null)
。如果它不为null,我打开通知片段并传递收到的通知ID。if(id != -1)
我打开通知片段。问题是点击后退按钮后我会直接进入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()将它们添加到活动状态。
请有人纠正我的错误并告诉我正确的方法。
答案 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会出现。