我有一个基于Android文档中example的导航抽屉。
当您打开导航栏时,它会在抽屉内显示MainMenuFragment
。选择菜单项时,它会用SubMenuFragment
替换抽屉内的片段。这对后退按钮的效果很好。
按后退按钮始终关闭抽屉,但我想使用后退按钮在MainMenuFragment
显示时在抽屉中显示SubMenuFragment
。如何处理导航抽屉内的后退按钮以替换抽屉内显示的碎片。
更换抽屉内的碎片不是问题所在。我无法弄清楚如何停止后退按钮关闭抽屉并让它显示MainMenuFragment
。
我的主要活动XML(缩写):
<android.support.v4.widget.DrawerLayout ....>
<FrameLayout android:id="@+id/container" .../>
<FrameLayout android:id="@+id/drawer" android:layout_gravity="start" .../>
</android.support.v4.widget.DrawerLayout>
和我班级的相关部分:
public class MainActivity extends Activity {
...
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getFragmentManager().beginTransaction()
.replace(R.id.drawer, new MainMenuFragment()).commit();
// setup DrawerLayout and ActionBarDrawerToggle
...
}
private void showSubMenu() {
getFragmentManager().beginTransaction()
.replace(R.id.drawer, new SubMenuFragment()).commit();
}
}
答案 0 :(得分:1)
我之前在不同情况下使用的是将片段添加到Fragment BackStack。
所以当更改片段时首先将它添加到后栈。
getFragmentManager().beginTransaction()
.replace(R.id.drawer, new MainMenuFragment()).addToBackStack(null).commit();
处理时请执行以下操作。
int count = getSupportFragmentManager().getBackStackEntryCount();
if(count > 1)
getSupportFragmentManager().popBackStack();
试试这个,看它是否有效。
同时检查一下:http://developer.android.com/training/implementing-navigation/temporal.html#back-fragments