我打开“活动A”。 “活动A”立即执行FragmentTransaction
这样打开“片段A”:
FragmentTransaction t = fm.beginTransaction();
ListFragment f = new ProfileFragment();
t.replace(R.id.main_frag, f, "act_frag");
f.setArguments(args);
t.commit();
“片段A”上面有一个按钮,我想打开一个新的Fragment
(“片段B”),但在后台堆叠中保留“片段A” - 所以如果用户回击,它仍然存在。所以我这样做:
FragmentTransaction t = fm.beginTransaction();
ListFragment f = new FollowFragment();
String username = tvUser.getText().toString();
Bundle args = new Bundle();
args.putString("follow", "watching");
args.putString("userprofile", username);
args.putInt("userIdprofile", userId);
f.setArguments(args);
t.replace(R.id.main_frag, f, "watching_frag");
t.addToBackStack("watching_frag");
t.commit();
我想通过添加t.addToBackStack(null);
可以做到这一点;我就是这样做过的。但相反,当用户回击时,它只会关闭“活动A”。
答案 0 :(得分:1)
默认情况下,按下后退按钮时,活动将关闭。我认为,对于你要做的事情,你必须覆盖onBackPressed方法并添加代码来处理 例如:
@Override
public void onBackPressed() {
FragmentManager fm = getSupportFragmentManager();
if(fm.getBackStackEntryCount() > 0){
fm.popBackStack();
return;
}
super.onBackPressed();
}
这样,当按下后退时,它会首先检查是否有任何后退条目,并在按下后退时弹回,如果没有,则调用默认动作。
答案 1 :(得分:0)
您是否尝试在t.addtoBackStack中添加一些值而不是null? 我现在无法测试它,但我认为这可能是你的问题。