android导航抽屉/操作栏中的DrawerToggle backbutton设置

时间:2015-07-09 07:00:15

标签: android android-fragments navigation navigation-drawer back

我正在使用android v4抽屉切换来实现导航抽屉。

mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
                R.drawable.menu_logo, R.string.drawer_open,
                R.string.drawer_close)

我的问题是,当我点击导航抽屉图标时,我打开了一个抽屉布局(列表)。如果我点击我导航到该片段的任何项目。这是我的代码。

case 1:
fragmentPopped = fragmentManager.popBackStackImmediate(
                    NewBikeSearchFragment.TAG, 0);

            if (!fragmentPopped
                    && fragmentManager
                    .findFragmentByTag(NewSearchFragment.TAG) == null) {

                ft.setCustomAnimations(R.anim.grow_from_middle, R.anim.fade_out);

                NewSearchFragment newfragment = new NewSearchFragment();

                ft.replace(R.id.content_frame, newfragment,
                        NewSearchFragment.TAG);
                ft.addToBackStack(NewSearchFragment.TAG);
                ft.commit();
            }

对于该片段导航,我想将R.drawable.menu_logo更改为后退图标。我搜索了一些教程和示例,但我没有成功。您能否在V4中了解如何完成此任务?

2 个答案:

答案 0 :(得分:1)

请尝试致电

getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
来自你的片段的

如果还不够,请添加此行

getActivity().getActionBar().setHomeAsUpIndicator(R.drawable.ic_back_button);

答案 1 :(得分:0)

public static boolean isHomeFragment = true;

在Fragment中编写此代码

MainActivity.actionBar.setDisplayHomeAsUpEnabled(true);
        MainActivity.actionBar.setHomeAsUpIndicator(R.drawable.ic_action_navigation_arrow_back);
        MainActivity.isHomeFragment = false;

在Home Fragment中编写此代码

MainActivity.isHomeFragment = true;
            MainActivity.actionBar.setDisplayHomeAsUpEnabled(true);
            MainActivity.actionBar.setHomeAsUpIndicator(R.drawable.menu_logo);

在mainactiviity中写下这个逻辑。这很完美。

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:

            if (isHomeFragment) {
                if (mDrawerToggle.onOptionsItemSelected(item)) {
                    return true;
                }
            }
            else
            {
                onBackPressed();
            }
            break;
        default:
            break;
        }

        return super.onOptionsItemSelected(item);
    }