我有一个使用NavigationDrawer和工具栏的应用程序。当我点击NavigationDrawer中的一个菜单时,它会显示一个片段(让我们称之为fragment1)。里面的fragment1是一个按钮,点击时会显示另一个片段(fragment2)。
好的,当我在fragment1时,工具栏会显示一个汉堡包图标,当我点击它时,抽屉就会被打开。当我在fragment2时,工具栏会显示一个后退图标(向上插入符号)而不是汉堡包。好的,这是正确的,但当我点击后面的图标(向上插入符号)时,抽屉将被打开。那么我该怎么办呢,当点击后面的图标(向上插入符号)时,我会被带回到fragment1,而不是打开抽屉?
这是我的onClick for the drawer
@Override
public void onClick(View v) {
int position = getPosition();
Fragment fragment = null;
FragmentManager fManager = ((FragmentActivity) contxt).getSupportFragmentManager();
FragmentTransaction transaction = fManager.beginTransaction();
Toast.makeText(contxt, "The Item Clicked isss: " + position, Toast.LENGTH_SHORT).show();
mDrawerLayout = (DrawerLayout) ((FragmentActivity) contxt).findViewById(R.id.dlMainDrawer);
mDrawerLayout.closeDrawers();
switch (position) {
case 1:
fragment = new MenuHome();
transaction.replace(R.id.container, fragment, "fragmentHome");
transaction.addToBackStack(null);
transaction.commit();
break;
case 2:
fragment = new MenuExpensesDaily();
transaction.replace(R.id.container, fragment, "fragmentExpensesDaily");
transaction.addToBackStack(null);
transaction.commit();
break;
default:
break;
}
}
因此,使用上面的代码,我打开了MenuExpensesDaily的一个实例。在MenuExpensesDaily中,当我点击一个菜单项时,它会打开另一个片段,ExpensesDailyAdd,如下所示:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_main, menu);
MenuItem mItem = menu.findItem(R.id.tbAddExpenses);
mItem.setVisible(true);
mItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
ExpensesDailyAdd addExpenses = new ExpensesDailyAdd();
getFragmentManager().beginTransaction()
.replace(R.id.container, addExpenses, null)
.addToBackStack(null)
.commit();
return true;
}
});
}
好的,现在当打开ExpensesDailyAdd时,汉堡包图标会变为向上插入符号。但是当我点击向上插入符号时,它会打开抽屉而不是回到上一个片段。