actionBarDrawerToggle.setDrawerIndicatorEnabled(false) 后退箭头没有动作

Posted

技术标签:

【中文标题】actionBarDrawerToggle.setDrawerIndicatorEnabled(false) 后退箭头没有动作【英文标题】:actionBarDrawerToggle.setDrawerIndicatorEnabled(false) back arrow has no action 【发布时间】:2020-05-31 18:11:55 【问题描述】:

我使用导航抽屉,我想为内部片段禁用它。 我使用以下代码来设置抽屉:

private void initSideMenu() 
        actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.Open, R.string.Close);

        drawerLayout.addDrawerListener(actionBarDrawerToggle);
        actionBarDrawerToggle.syncState();

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        binding.nv.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() 
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) 
                switch (item.getItemId()) 
                    case R.id.menuData:
                        selectPersonalDataFragment();
                        break;
                    case R.id.menuBlogPosts:
                        closeDrawerAndNavigateTo(new BlogPostFragment(), true);
                        break;
                    case R.id.menuSettings:
                        closeDrawerAndNavigateTo(new BackgroundImageFragment(), true);
                        break;
                
                return true;
            
        );
    

要禁用导航抽屉,我使用以下代码:

@Override
    public void setDrawerEnabled(boolean enabled) 
        Log.d(TAG, "setDrawerEnabled: " + enabled);
        if(enabled) 
            drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
            actionBarDrawerToggle.setDrawerIndicatorEnabled(true);
         else 
            actionBarDrawerToggle.setDrawerIndicatorEnabled(false);
            actionBarDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() 
                @Override
                public void onClick(View v) 
                    onBackPressed();
                
            );
        
    

汉堡图标变为后退箭头,但此箭头没有任何功能。那么为什么我的听众不听呢?

【问题讨论】:

【参考方案1】:

经过大量尝试我发现,我不必设置工具栏导航单击侦听器,而是必须覆盖onSupportNavigateUp()

更改了 setDrawerEnabled():

@Override
    public void setDrawerEnabled(boolean enabled) 
        Log.d(TAG, "setDrawerEnabled: " + enabled);
        if(enabled) 
            drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
            actionBarDrawerToggle.setDrawerIndicatorEnabled(true);
         else 
            actionBarDrawerToggle.setDrawerIndicatorEnabled(false);
        
    

新覆盖的 onSupportNavigateUp():

@Override
    public boolean onSupportNavigateUp() 
        onBackPressed();
        return true;
    

【讨论】:

以上是关于actionBarDrawerToggle.setDrawerIndicatorEnabled(false) 后退箭头没有动作的主要内容,如果未能解决你的问题,请参考以下文章