回到之前的片段

时间:2014-05-21 23:30:06

标签: android android-fragments fragment android-listfragment back-stack

我有一个程序,当一个用户点击一个按钮时,它会从一个片段到另一个片段。问题是,我希望在单击后退按钮后重新出现上一个片段。代码如下:

这是创建第一个片段:

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。

提前致谢。

3 个答案:

答案 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;
    }
}