简体   繁体   English

打开抽屉时,Android导航抽屉图标恢复为默认设置

[英]Android Navigation Drawer Icon reverting to default when Drawer is open

I'm having a problem with the Navigation Drawer Icon. 我的导航抽屉图标有问题。
We replaced the default "back caret" to use a different icon and it works fine. 我们将默认的“后插入符号”替换为使用其他图标,并且效果很好。

However, if the navigation drawer is already open and the user rotates their device, then the icon reverts back to the default caret and won't go back to the custom one until the navigation drawer is closed and the onCreate() method for the activity is called again (usually by rotating the device). 但是,如果导航抽屉已经打开并且用户旋转了设备,则图标将恢复为默认的插入符号,并且直到导航抽屉关闭并且活动的onCreate()方法都不会返回到自定义图标。再次调用(通常通过旋转设备)。

Here is the code: 这是代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_start);

    // set the toolbar as the action bar
    Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
    toolbar.setNavigationIcon(R.drawable.ic_drawer);
    setSupportActionBar(toolbar);

    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new StartFragment())
                .commit();
    }

    //Init the GameLog
    GameLog.init(this);
}

/**
 * Initializes the DrawerLayout for the particular activity
 */
public static void init(Activity activity) {
    mActivity = activity;
    mDrawerLayout = (DrawerLayout)activity.findViewById(R.id.drawer_layout);
    mRecyclerView = (RecyclerView)activity.findViewById(R.id.left_drawer);

    //set adapter
    mRecyclerView.setAdapter(mAdapter);
    //set layout manager
    mRecyclerView.setLayoutManager(new LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false));
    //add a divider between elements
    mRecyclerView.addItemDecoration(
            new HorizontalDividerItemDecoration.Builder(activity)
                    .color(Color.WHITE)
                    .build());

    Toolbar toolbar = (Toolbar)((ActionBarActivity)activity).getSupportActionBar().getCustomView();

    mDrawerToggle = new ActionBarDrawerToggle(activity, mDrawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close);

    // Set the drawer toggle as the DrawerListener
    mDrawerLayout.setDrawerListener(mDrawerToggle);

    if (activity.getActionBar() != null) {
        activity.getActionBar().setDisplayHomeAsUpEnabled(true);
        activity.getActionBar().setHomeButtonEnabled(true);
    }

}

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    // Sync the toggle state after onRestoreInstanceState has occurred.
    GameLog.getToggle().syncState();
}

Hopefully this makes sense. 希望这是有道理的。

Thanks for any help. 谢谢你的帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM