Android 弹出片段并将其保留为单个实例

Android 弹出片段并将其保留为单个实例,android,android-fragments,Android,Android Fragments,我正在尝试解决活动中片段之间的后退按钮。 为此,我做了以下工作: FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(R.id.content_frame, new HomeFragmentFeed()); transaction.addToBackStack(null); transaction

我正在尝试解决活动中片段之间的后退按钮。 为此,我做了以下工作:

        FragmentTransaction transaction = getFragmentManager().beginTransaction();
        transaction.replace(R.id.content_frame, new HomeFragmentFeed());
        transaction.addToBackStack(null);
        transaction.commit();
以及处理背部:

@Override
    public void onBackPressed() {
        FragmentManager fm = getFragmentManager();

        if (fm.getBackStackEntryCount() > 1)        
            fm.popBackStack();      
        else
            super.onBackPressed();
    }
问题是,如果我在片段之间导航而不弹出它们,那么每个片段都可能在堆栈中多次出现。 我如何解决每个片段在堆栈中只能出现一次的问题


谢谢

我认为这是不可能的,所以我建议您在每次进行碎片交易时都要清除后台。这样,只有最后一个碎片会在后台

popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)

谢谢,但我想保留堆栈本身,所以“后退”按钮将始终将我返回到上一个堆栈fragment@Himberjack我认为您应该使用自己的数据结构来处理这种行为。我认为使用包含片段的hashmap是一个好方法。通过这种方式,您可以检查该片段的实例是否在hashmap中,如果它可用,则可以使用它而不是创建新片段:)