打开抽屉时操作栏图标消失

Action Bar icons disappear when the drawer is opened

我是 Android 的新手。我正在尝试在我的操作栏中添加 2 个图标。所以,我用 getSupportActionBar().setIcon() 来做到这一点。这是我使用的代码 onCreate().

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    mNavigationDrawerFragment = (NavigationDrawerFragment)

    getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
    mTitle = getTitle();

    // Set up the drawer.
    mNavigationDrawerFragment
       .setUp(R.id.navigation_drawer,(DrawerLayout) findViewById(R.id.drawer_layout));

    getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFA500"))); // change the color of header

    mTitle = mDrawerTitle = getTitle();
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

    // enabling action bar app icon and behaving it as toggle button
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu);

    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,R.drawable.ic_menu, R.string.app_name,R.string.app_name){

        public void onDrawerClosed(View view) {
            getSupportActionBar().setTitle(mTitle);
            // calling onPrepareOptionsMenu() to show action bar icons
            invalidateOptionsMenu();
        }

        public void onDrawerOpened(View drawerView) {
            getSupportActionBar().setTitle(mDrawerTitle);
            // calling onPrepareOptionsMenu() to hide action bar icons
            invalidateOptionsMenu();          }
        };

        mDrawerLayout.setDrawerListener(mDrawerToggle);

        getSupportActionBar().setIcon(R.drawable.ic_deals);
        getSupportActionBar().setIcon(R.drawable.ic_loc);
    }

当我打开时,抽屉图标从操作栏中消失。 Bu,当我重新打开它时,图标又出现了。

有人知道这里发生了什么吗?

提前致谢。 :)

您可以尝试关注此 Link

检查一下并告诉我它是否有效。

或者您也可以这样做。 创建menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:id="@+id/next"
          android:icon="@drawable/ic_next"
          android:title="@string/next" />
  <item android:id="@+id/previous"
        android:icon="@drawable/ic_previous"
        android:title="@string/previous" />
  <item android:id="@+id/list"
        android:icon="@drawable/ic_list"
        android:title="@string/list" /> 
</menu>

现在您可以在菜单上设置图标了

现在在 CreateOptionMenu 中

public boolean onCreateOptionsMenu(Menu menu) {
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.menu, menu);
  return true;
}

并访问该菜单。

public boolean onOptionsItemSelected(MenuItem item) {
  switch (item.getItemId()) {
  case R.id.next:
        Toast.makeText(this, "You have chosen the " + getResources().getString(R.string.next) + " menu option",
                    Toast.LENGTH_SHORT).show();
        return true;
  …
  default:
        return super.onOptionsItemSelected(item);
  }

从 onDrawerClosed() 和 onDrawerOpened() 中删除 invalidateOptionsMenu() 并查看打开抽屉时图标是否消失。

由于您没有post onPrepareOptionsMenu() 方法,我想这就是问题所在。 invalidateOptionsMenu() 调用 onPrepareOptionsMenu(),我想这就是打开抽屉时隐藏图标的代码。

P.S:post作为单独的答案,因为我无法发表评论。