片段人工backstack
Fragment artificial backstack
我试图在从通知栏打开通知后创建人工后台堆栈。
打开通知后的工作流程:
- 点击打开 MainActivity 的通知 Intent 后。
- 打开 MainActivity 后我检查
if(getArguments != null)
。如果它不为空,我打开通知片段并传递收到的通知 ID。
- 如果通知
if(id != -1)
我打开通知片段。
问题是点击后退按钮后我直接返回 MainActivity window 跳过通知片段。
我这样打开通知片段:
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 用于显示片段。
我正在使用支持库。
我读到 FragmentTransaction.replace() 会删除所有现有片段并添加新片段。 FragmentTransaction.add() 将它们添加到 activity 状态。
请有人纠正我做错了什么并告诉我正确的方法。
改变这个
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();
基本上,您没有将 Notifications Fragment 添加到 backstack,这就是为什么单击返回时会出现 MainActivity 的原因。
我试图在从通知栏打开通知后创建人工后台堆栈。
打开通知后的工作流程:
- 点击打开 MainActivity 的通知 Intent 后。
- 打开 MainActivity 后我检查
if(getArguments != null)
。如果它不为空,我打开通知片段并传递收到的通知 ID。 - 如果通知
if(id != -1)
我打开通知片段。
问题是点击后退按钮后我直接返回 MainActivity window 跳过通知片段。
我这样打开通知片段:
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 用于显示片段。
我正在使用支持库。
我读到 FragmentTransaction.replace() 会删除所有现有片段并添加新片段。 FragmentTransaction.add() 将它们添加到 activity 状态。
请有人纠正我做错了什么并告诉我正确的方法。
改变这个
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();
基本上,您没有将 Notifications Fragment 添加到 backstack,这就是为什么单击返回时会出现 MainActivity 的原因。