我很困惑。
我有一个活动A,片段F1和F2,当点击一个按钮时,我想隐藏F1并将F2添加到同一个地方,然后可以通过后退按钮返回F1。所以我做了如下。
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.hide(getFragmentManager().findFragmentByTag(CHAT_LIST_FRAGMENT_TAG));
transaction.add(R.id.content_frame, MessageListFragment.newInstance(username, false));
transaction.addToBackStack(null);
transaction.commit();
但是当我按下后退按钮时,活动结束而不是返回F1。我尝试使用替换,结果是一样的。
唯一的解决办法是覆盖onBackPress方法吗?
我尝试了下面的代码。
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.repalce(R.id.content_frame, MessageListFragment.newInstance(username, false));
transaction.addToBackStack(null);
transaction.commit();
但没有改变。
答案 0 :(得分:1)
尝试使用replace()
代替hide()
+ add()
。这是相应的Android documentation。
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.content_frame, MessageListFragment.newInstance(username, false));
transaction.addToBackStack(null);
transaction.commit();
答案 1 :(得分:0)
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.container, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commitAllowingStateLoss();
这很有效。可能需要“getSupportFragmentManager”而不是你的getFragmentManager
NB!不要“添加ToBackStack”根片段,否则,当你点击返回时,它会以空白屏幕结束,试图关闭应用程序。