尽管我已经多年使用Android,但这是我第一次在实际项目中使用
该应用程序具有带有4个主要部分的
Fragments
,所以我有点困惑:-P该应用程序具有带有4个主要部分的
NavigationDrawer
。我只使用一个主Activity
,其中包含一个具有内容View
的Layout
,我将其替换为Fragments
。当选择NavigationDrawer
中的选项时,我实例化一个Fragment
并将其放入该内容View
中。我正在执行类似于以下操作: private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
selectItem(position);
}
}
public static int drawerSelectedOption = 0;
private void selectItem(int position) {
drawerSelectedOption = position;
Fragment fragment = null;
switch (position) {
case 0:
fragment = new StoresFragment();
break;
case 1:
//promos
case 2:
fragment = new TransactionsFragment();
break;
case 3:
break;
case 4:
fragment = new Settings();
break;
}
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
setTitle(mSectionTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
}
每个主要的NavigationDrawer
Fragments
都会从内部推送更多的Fragments
。因此,每个主要的“屏幕”内部都有几个子屏幕,如下所示。
Drawer __ Fragment 1.0 -- Fragment 1.1 -- Fragment 1.2
|__ Fragment 2.0 -- Fragment 2.1 -- Fragment 2.2
我正在通过上一个Fragment
的ActionBar
菜单来推送这些内部Fragments
,方法如下:
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
OrderCreateFragment fragment = new OrderCreateFragment();
fragmentTransaction.add(R.id.content_frame, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
我遇到了几个问题,所以我正在寻求关于这种方法的建议:
- 我甚至不知道如何正确管理
ActionBar
菜单项。每个Fragment
都有自己的菜单,有时它们会固定在栏中(例如,如果通过点击NavigationDrawer
切换Fragments
而不是使用Android返回键返回) - 选择一个
NavigationDrawer
选项后,应完全弹出StackBack
。我怀疑我的ActionBar
混乱的项目与此有关,因为一些Fragments
仍保留在堆栈中。
因此,请问是否这是一个正确的方法,如何解决StackBack
和ActionBar
的问题?
更新:看起来在selectItem
方法上清除整个堆栈解决了两个主要问题。虽然我仍然有兴趣听取关于这种方法的意见。