片段导航

Fragments navigation

我需要像在 Gmail 应用程序中一样创建片段导航。就像:我们有一个主片段 A,我们可以从导航抽屉中打开另一个片段(B、C、D...),当我们打开新片段时,它在主片段之上打开,当按下返回时按钮,在所有情况下我们都会回到主片段 A,不依赖于新打开片段的计数。看起来,第一个主要片段 A 我们使用 add 方法(int FragmentTransaction)而不添加到片段 backStack。然后,下一个片段 B 我们也使用方法 add,添加到后台堆栈。当我需要打开另一个片段(片段 C)时,我需要替换第二个片段 B。但是,当我使用方法 replace() 时,替换了所有容器,并且当从片段 C 或 B 按下后退按钮时主片段 A 不显示和应用程序关闭。所以,问题是:如何只替换片段 B 或 C,而不丢失片段 A?

像这样打开片段

HighlightFragment highlightFragment=new HighlightFragment(FirstReaderScreen.this); //Your fragment
    getSupportFragmentManager()
    .beginTransaction()
    .add(R.id.LL_Fragment, highlightFragment) // LL_fragment is container
    .addToBackStack(null)
    .commit();

并在 Activity OnBackPress

@Override
public void onBackPressed() {
    if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
        getSupportFragmentManager().popBackStack();
    } else {
        super.onBackPressed();
    } 
}

一个有效的解决方案是在您的 activity 中有两个容器框架布局。第一个(将在另一个下方)包含您的片段 A。您打开的所有内容都将 added/replaced 在第二个容器中。

另一种解决方案是将片段 A 静态包含在您的布局中,并将容器框架布局放在其顶部,您可以在其中添加片段 B、C、D 等。