android - onOptionsItemSelected 未在 Activity 中调用

标签 android toolbar drawerlayout optionmenu actionbardrawertoggle

<分区>

这是我的问题。 onOptionsItemSelected() 未在点击抽屉时调用。所以这是我的代码,非常简单......

public class MainActivity extends AppCompatActivity {

private Toolbar toolbar;
private DrawerLayout drawer;
private ActionBarDrawerToggle toggle;
private RelativeLayout aboutUs, feedBack;
private View view;

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

    view = findViewById(R.id.mainView);
    aboutUs = (RelativeLayout) findViewById(R.id.list4);
    feedBack = (RelativeLayout) findViewById(R.id.list5);

    initToolbar();
    drawerInit();
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
        if (drawer.isDrawerOpen(Gravity.LEFT)) {
            drawer.closeDrawer(Gravity.LEFT);
        } else {
            drawer.openDrawer(Gravity.LEFT);
        }
    }
    return super.onOptionsItemSelected(item);
}

public void initToolbar() {
    toolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);
}

public void drawerInit() {
    drawer = (DrawerLayout) findViewById(R.id.drawer);

    toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.drawer_open, R.string.drawer_close) {

        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
            float moveFactor = (drawerView.getWidth() * slideOffset);
            view.setTranslationX(moveFactor);
        }

        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
        }
    };

    drawer.addDrawerListener(toggle);
    toggle.setDrawerIndicatorEnabled(true);
    toggle.syncState();
}

@Override
protected void onDestroy() {
    super.onDestroy();
}

我在 optionsItemSelected 回调中设置了断点,但这对抽屉点击不起作用。

但是抽屉打开了。那么问题出在哪里,我该如何解决呢?谢谢回答......................................

最佳答案

这个activity.xml代码..

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">

<include
    layout="@layout/app_bar_main2"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header_main2"
    app:menu="@menu/activity_main2_drawer" />

  </android.support.v4.widget.DrawerLayout>

关于android - onOptionsItemSelected 未在 Activity 中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53629924/

相关文章:

android - android中intent和intenfilter之间的区别

java - 检测用户何时关闭 float 工具栏框架

internet-explorer-7 - 如何强制 IE7 工具栏始终显示

android - 按钮-声音-onHoverListener-老虎

java - 如何通过 JNI 设置 Java 类的 Double/Integer 类型的值

swift - 使用 Swift 在工具栏中切换播放/暂停 UIBarButtonItem

android - NavigationView 与 DrawerLayout setCheckedItem 不工作

android - 如何在 NavigationView 中将项目添加到菜单组

android - Toolbar隐藏了PagerTitleStrip和部分RecyclerView

java - Android:在自定义 Web View 中检测并打开外部链接