我通过在Drawer布局中包含一个片段来制作导航栏。一切正常,抽屉从左边滑出一切。
首次打开应用程序时,我会看到一个汉堡包图标。当我完全打开并将其关闭时,汉堡包图标会变为左箭头。
我无法弄清楚为什么会这样。
以下是代码:
的活动:
// Drawer
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
// toolbar
toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("Blah");
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// navigation drawer
NavigationDrawerFragment navigationDrawerFragment = (NavigationDrawerFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
navigationDrawerFragment.setUp(R.id.navigation_drawer, drawerLayout, toolbar);
上面调用的setUp函数:
public void setUp(int fragmentId, DrawerLayout drawerLayout, Toolbar toolbar) {
this.navigationDrawerView = getActivity().findViewById(fragmentId);
this.drawerLayout = drawerLayout;
actionBarDrawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getActivity().invalidateOptionsMenu();
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerOpened(drawerView);
getActivity().invalidateOptionsMenu();
}
};
drawerLayout.setDrawerListener(actionBarDrawerToggle);
drawerLayout.post(new Runnable() {
@Override
public void run() {
actionBarDrawerToggle.syncState();
}
});
}
P.S:我是Android编程新手。我按照youtube教程来实现这一目标。我很清楚发生了什么,但请(如果可能的话)更具描述性,以便帮助我遵循它。
答案 0 :(得分:2)
你的方法 onDrawerClosed 是错误的。您正在调用super.onDrawerOpened并且必须是 super.onDrawerClosed(drawerView);
以这种方式
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
getActivity().invalidateOptionsMenu();
}
答案 1 :(得分:0)
只需更改
import android.support.v4.app.ActionBarDrawerToggle;
到
import android.support.v7.app.ActionBarDrawerToggle;