【发布时间】:2015-01-23 14:29:16
【问题描述】:
我有一个主要活动,其中我有一个抽屉和 selectItem 过程来处理抽屉的项目选择:
public void selectItem(drawerItems position) {
if (Utils.userId != 0) {
switch (position) {
case userSettings:
Fragment frag = new UserSettings();
Bundle args = new Bundle();
args.putSerializable("loginmode", Utils.LoginMode.lmRegistered);
frag.setArguments(args);
Utils.replaceFragment(frag);
break;
case option2:
Utils.replaceFragment(new fragmentX());
break;
case option3:
Utils.replaceFragment(new fragmentY());
break;
}
mCurrentSelectedPosition = position.ordinal();
if (mCurrentSelectedPosition > 0) {
mDrawerListView.setItemChecked(mCurrentSelectedPosition - 1, true);//user settings is not part of drawer view
mDrawerListView.setSelection(mCurrentSelectedPosition - 1);
} else mDrawerListView.clearChoices();
setTitle(mDrawerItemTitles[mCurrentSelectedPosition]);
} else {
Toast.makeText(this, getString(R.string.no_active_user), Toast.LENGTH_LONG).show();
mDrawerListView.clearChoices();
}
if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) mDrawerLayout.closeDrawer(GravityCompat.START);
}
只要我在使用抽屉,这效果就很好,问题是,我也从片段中切换片段,所以我打电话给Utils.replaceFragment(new fragmentX());,但我错过了选择的所有其他“乐趣”一个项目(标题、项目焦点等)。
我想将 selectItem 也移动到 Utils 类,但我没有对 mDrawerItemTitles、mDrawerListView、mCurrentSelectedPosition 等的引用。我可以将它们添加到 Utils 类,但我想知道是否有更清洁、更好的方法实现我想要的。
另一种选择是公开 selectItem 并从托管片段中访问它,但我想知道是否有更好/更清洁的方法。
【问题讨论】:
标签: android android-fragments navigation-drawer