当前位置: 首页 > 知识库问答 >
问题:

工具栏后退按钮未调用OnOptions ItemSelected Android

陈富
2023-03-14

我可以在工具栏中看到后退按钮,但当我单击时,什么都没有发生。它不会onOptionsItemSelec,但当我删除ActionBarDrawerTougle的整个实现时,后退按钮工作正常。我需要在需要时在两者之间切换。提前感谢。

package demo.sample.com.sample.base;

public class MainActivity extends AppCompatActivity {

    private static final String TAG = MainActivity.class.getSimpleName();
    private DrawerLayout mDrawer;
    private ActionBarDrawerToggle mDrawerToggle;


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

        setContentView(R.layout.activity_digi_care);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerToggle = new ActionBarDrawerToggle(
                this, mDrawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        mDrawer.setDrawerListener(mDrawerToggle);
        mDrawerToggle.syncState();
        mDrawer.setFocusable(false);

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setItemIconTintList(null);
        navigationView.setNavigationItemSelectedListener(this);
        navigationView.getMenu().getItem(0).setChecked(true);


        mDrawerToggle.setDrawerIndicatorEnabled(false);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        Logger.i(TAG, "onOptionsItemSelected called");
        switch (item.getItemId()) {
            case android.R.id.home:
                Logger.i(TAG, "Back button pressed"); //Never getting called
                //onBackPressed();
                return true;

            default:
                return super.onOptionsItemSelected(item);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.map_menu, menu);
        return super.onCreateOptionsMenu(menu);
    }

}

共有2个答案

劳嘉实
2023-03-14

我终于找到了一个解决方案。取而代之的是获得工具栏主页按钮点击onOptionsItemSelec()它可以通过DrawerToggle.setToolbarNavigationClickListener来处理。

mDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // event when click home button
                Log.d("cek", "home selected");
            }
        });

多亏了“喵喵”。源-无法捕获工具栏主按钮单击事件

储志业
2023-03-14

如果您希望单击切换按钮时触发onOptionsItemSelec()方法,则需要使用不采用Toolbar参数的ActionBarDrawerTougle的四参数构造函数。

public ActionBarDrawerToggle(Activity activity,
                             DrawerLayout drawerLayout,
                             int openDrawerContentDescRes,
                             int closeDrawerContentDescRes)

否则,开关将直接处理抽屉的打开/关闭。

 类似资料:
  • 我正在使用Appcompat V7库中的新工具栏,我正在制作一个带有抽屉菜单和片段的应用程序。 在一些片段中,我不想显示汉堡包图标,而是箭头。。。很好,我是这样做的: 我的问题是:如何或在哪里我需要设置主页按钮lisener或什么我需要听“返回”按钮?我想调用主反压方法,并用汉堡图标设置抽屉菜单图标...

  • 在这些Android文档的帮助下。我正在尝试做一个操作栏后退按钮。我得到一个操作栏后退按钮,如下图: 输出: 但我的问题是在看了画廊的图片后,我按下了动作栏后退按钮。 然后它不工作了。但它必须回到上一页。 下面列出了代码。 厨房活动。java: GalleryDetailFragment。java: 如果你知道如何解决这些问题,任何人都可以帮助我。谢谢你。

  • 我试图在中间显示我的工具栏标题,为此我使用以下答案中给出的方法:-工具栏中心标题 但是,当我通过以下代码在我的中启用后退按钮时: 工具栏的标题不显示在中间,但向右稍微偏离中心。 如何实现居中标题而不受后退按钮或菜单栏的影响?

  • 我在这件事上完全被难住了。我有一个活动C,当我试着按下后退按钮时,它工作了。但是,当我使用操作栏中的home/up按钮时,它就会崩溃(请参见下面的错误)。下面是我的代码中处理备份/备份按钮的部分。 活动C: 错误: 这是否与到达活动C有两种可能的方式有关?要么是-

  • 在此对话框您可以指定当浏览磁盘文件夹 (“在压缩文件外部时显示”选项) 或查看压缩文件内容 (“在压缩文件内部时显示”选项 ) 时,要显示哪一些工具栏按钮。可以改变按钮的顺序,只要选择您希望移动的按钮并按下“上移”或“下移”来改变它们的位置。如果您要恢复默认工具栏配置,按下“默认”按钮。 “分隔符”按钮在选择的当前按钮前插入一个分隔符线。如果您要移除一个分隔符,或者取消它的选择状态,或者再次按下“

  • 我不能改变返回按钮的颜色。我用的是工具栏材质设计。在我的应用程序中,我应用了工具栏的黑色背景,但默认情况下,背面设计是黑色的,这就是为什么我只想更改此返回按钮的颜色。请给我解决办法。 非常感谢。