如何使导航抽屉切换按钮在工具栏上可见?

How to make Navigation drawer toggle button visible on Toolbar?

我收到错误消息ActionBarDrawerToggle: DrawerToggle may not show up because NavigationIcon is not visible. You may need to call actionbar.setDisplayHomeAsUpEnabled(true)

但是我已经在我的代码中调用了它,仍然出现同样的错误并且切换按钮不可见。

我的代码:

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

    //layout variables
    mDrawerLayout = findViewById(R.id.main_drawer_layout);
    mNavigationView = findViewById(R.id.main_nav_view);


    mActionDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open, R.string.close);
    mDrawerLayout.addDrawerListener(mActionDrawerToggle);
    mActionDrawerToggle.syncState();

    //changed as keeps throws NULLPOINTEXCEPTION
    if(getSupportActionBar() != null) {
       // getSupportActionBar().setDisplayHomeAsUpEnabled(true);


        // assigning ID of the toolbar to a variable
         toolbar = (Toolbar) findViewById(R.id.my_toolbar);

        // using toolbar as ActionBar
        setSupportActionBar(toolbar); //set


        ActionBar actionbar = getSupportActionBar(); //get
        actionbar.setTitle("SharePixel");
        actionbar.setDisplayHomeAsUpEnabled(true);
        actionbar.setHomeAsUpIndicator(R.drawable.ic_home_menu);


    }

setHomeAsUpIndicator() 不会执行,因为 if(getSupportActionBar() != null) 条件在 drawer-based activity 中不应该有效,因为它需要自定义工具栏,您调用设置自定义工具栏之前的这种情况。

除非您的 activity 主题在 styles/themes XML 中设置了 ActionBar,否则不会实现此条件。 (如果您没有自定义 activity 主题集,那么它是从基本应用程序主题继承的。

解决这个问题:

  1. 确保您的 activity 主题继承自 NoActionBar 后人;例如 Theme.MaterialComponents.DayNight.NoActionBar(或者如果您的 activity 没有自定义样式;请在基本应用程序主题上执行)。
  2. 删除 if(getSupportActionBar() != null) 条件。