片段导航
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 等。
我需要像在 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 等。