Android 管理碎片活动中的堆栈

Android 管理碎片活动中的堆栈,android,android-layout,android-intent,Android,Android Layout,Android Intent,我是android新手。我使用“FragmentActivity”来实现选项卡栏控制。当我从一个碎片中推出另一个碎片时,我面临着问题。当我更改选项卡或尝试返回到上一个片段时,这种行为很奇怪。任何人都可以提供一些可靠的代码来正确管理堆栈。用于在片段之间转换 Fragment frag; FragmentTransaction transaction; frag = new Fragment1(); transaction = getSupportFragmentManager().beginTr

我是android新手。我使用“FragmentActivity”来实现选项卡栏控制。当我从一个碎片中推出另一个碎片时,我面临着问题。当我更改选项卡或尝试返回到上一个片段时,这种行为很奇怪。任何人都可以提供一些可靠的代码来正确管理堆栈。

用于在片段之间转换

Fragment frag;
FragmentTransaction transaction;
frag = new Fragment1();

transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.detailFragment, frag);
transaction.commit();
重写onKeyDown方法,并在每次按下后退按钮时删除当前片段

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        if (keyCode == KeyEvent.KEYCODE_BACK)
        {
            if (getSupportFragmentManager().getBackStackEntryCount() == 0)
            {
                this.finish();
                return false;
            }
            else
            {
                getSupportFragmentManager().popBackStack();
                removeCurrentFragment();

                return false;
            }



        }

        return super.onKeyDown(keyCode, event);
    }


    public void removeCurrentFragment()
    {
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

        Fragment currentFrag =  getSupportFragmentManager().findFragmentById(R.id.detailFragment);


        String fragName = "NONE";

        if (currentFrag!=null)
            fragName = currentFrag.getClass().getSimpleName();


        if (currentFrag != null)
            transaction.remove(currentFrag);

        transaction.commit();

    }

这是我的片段活动布局XML。告诉我应该写什么而不是“R.id.detailFragment”,我只是提到id来得到答案。提前谢谢。我仍然面临同样的问题。tab1单击->片段1->细节1 tab2单击->片段2->细节2然后tab1单击->细节2显示tab1再次单击->片段1显示