试图从屏幕Android中删除片段

时间:2013-10-24 22:29:07

标签: android android-fragments onclicklistener

我在一个活动中,我从那里启动一个片段,它在屏幕上显示很好,但我想使用该按钮然后删除相同的片段。我看不出代码有什么问题,我知道它会进入应该删除它的代码,因为toast说“删除片段”。有任何想法吗?感谢

    public class ButtonClickHandler implements View.OnClickListener {
    public void onClick(View view) {

        if (showFrag == true){
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        MyFragment myFragment = new MyFragment();
        fragmentTransaction.add(R.id.myfragment, myFragment);
        fragmentTransaction.commit();
                showFrag = false;
        Toast.makeText(getBaseContext(), "Show Fragment", Toast.LENGTH_SHORT).show();
        }
        else if (showFrag == false){
            FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            getSupportFragmentManager().popBackStack(); 
            fragmentTransaction.commit();
            Toast.makeText(getBaseContext(), "Remove Fragment", Toast.LENGTH_SHORT).show();
            showFrag = true;
        }
}


}

2 个答案:

答案 0 :(得分:1)

你之前没有调用addToBackStack:)

fragmentTransaction.add(R.id.myfragment, myFragment);
fragmentTransaction.addToBackStack(null);

删除应该只是:

getSupportFragmentManager().popBackStack(); 

无需创建局部变量,也无需创建事务。

答案 1 :(得分:1)

要弹出backstack的片段,您需要先将其添加到backstack。 您可以在致电fragmentTransaction.addToBackStack(null)

后致电fragmentTransaction.add(R.id.myfragment, myFragment);来完成此操作

还包括@coelho的评论 - 您不必启动FragmentTransaction来调用popBackStack()。