我有一个程序,当一个用户点击一个按钮时,它会从一个片段到另一个片段。问题是,我希望在单击后退按钮后重新出现上一个片段。代码如下:
这是创建第一个片段:
getFragmentManager().beginTransaction().add(R.id.team_fragment_holder, teamFragment).addToBackStack(null).commit();
这是切换到第二个片段:
setContentView(R.layout.mixed_team_holder);
FragmentManager fragMan = getFragmentManager();
FragmentTransaction fragTrans = fragMan.beginTransaction();
fragTrans.add(R.id.team_1,team1);
fragTrans.add(R.id.team_2, team2);
fragTrans.commit();
现在的问题是,当我点击后退按钮时,会出现一个空白页面(我假设是(R.id.team_fragment_holder)。是否有任何想法让第一个片段与其上的所有信息一起重新出现?< / p>
注意:所有片段都扩展了listfragment。
提前致谢。
答案 0 :(得分:4)
您的初始片段事务不应添加到backstack,第二个应该。按下时看到的空白页是移除teamFragment
的结果,因为它位于后台上。
getFragmentManager().beginTransaction().add(R.id.team_fragment_holder, teamFragment).commit();
和
FragmentManager fragMan = getFragmentManager();
FragmentTransaction fragTrans = fragMan.beginTransaction();
fragTrans.add(R.id.team_1,team1);
fragTrans.add(R.id.team_2, team2);
fragTrans.addToBackStack(null);
fragTrans.commit();
答案 1 :(得分:1)
您需要将片段添加到Back Stack。
FragmentManager fragMan = getFragmentManager();
FragmentTransaction fragTrans = fragMan.beginTransaction();
fragTrans.add(R.id.team_1,team1);
fragTrans.add(R.id.team_2, team2);
fragTrans.addToBackStack(null);//Here add the fragment
fragTrans.commit();
您需要验证后退按钮。
@Override
public void onBackPressed() {
if (getSupportFragmentManager().getBackStackEntryCount() == 0) {
super.onBackPressed();
} else {
getSupportFragmentManager().popBackStack();
}
}
答案 2 :(得分:1)
public void onClick(View v) {
switch (v.getId()) {
case R.id.fragment_button_project_location_ok:
//getActivity().finish();
//add back to previous screen
getFragmentManager().popBackStack();
break;
default:
break;
}
}