【问题标题】:Handling onOptionsItemSelected for both Navigation drawer and Action buttons处理导航抽屉和操作按钮的 onOptionsItemSelected
【发布时间】:2014-08-18 06:07:43
【问题描述】:

我在 Android 中的一项活动中有一个导航抽屉。我还在同一个活动的操作栏中添加了几个操作按钮和一个操作溢出。 现在,问题在于处理抽屉式导航项、操作按钮和操作溢出菜单的选择事件。 目前,我的setOptionsItemSelected 看起来像这样:

@Override
public boolean onOptionsItemSelected(MenuItem item) {

   if (mDrawerToggle.onOptionsItemSelected(item)) {
       return true;
   }

   return super.onOptionsItemSelected(item);
}

如何使它适用于导航项点击、操作按钮点击和操作溢出菜单点击? 感谢您的帮助。

【问题讨论】:

    标签: android


    【解决方案1】:

    所以,我对我的onOptionsItemSelected 函数进行了一些修改,并且能够使其工作。 以下是遇到相同问题的人的代码:

    @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // enabling drawer toggle by clicking on the app icon.
            if (mDrawerToggle.onOptionsItemSelected(item)) {
                return true;
            }
            else {
    
                switch(item.getItemId()) {
                    case R.id.action_refresh:
                        Log.d("ActionItemClicked", "Refresh clicked");
                        return true;
                    case R.id.action_share:
                        Log.d("ActionItemClicked", "Share clicked");
                        return true;
                }
            }
            return super.onOptionsItemSelected(item);
        }
    

    我希望它能帮助遇到同样问题的人。

    【讨论】:

      【解决方案2】:

      如果您的 xml 文件包含如下所示的 ListView,那么您需要在导航抽屉活动中将 findViewById 查找到 listView,然后设置其 setItemSelectListener... 我不知道你是如何实现和设计你的导航抽屉的..所以如果这没有帮助请分享你的代码..动作栏和导航抽屉之间没有关系和依赖

       <android.support.v4.widget.DrawerLayout 
              xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:id="@+id/drawerlayout">
              <fragment 
                  android:name="com.example.juju.Main"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:id="@+id/maincontent"></fragment>
              <ListView 
                  android:divider="@null"
                  android:background="#202020"
                  android:layout_width="240dp"
                  android:layout_height="match_parent"
                  android:id="@+id/drawerlist"
                  android:layout_gravity="left">
              </ListView>
          </android.support.v4.widget.DrawerLayout>
      

      下面的代码正在做的是使navigationdrawer能够从标题的动作栏打开..为了处理动作栏中的项目和溢出你必须通过onOptionItemSelected()实现它..希望这能清除一切..

          if (mDrawerToggle.onOptionsItemSelected(item)) {
                 return true; 
             } 
      
      
         return super.onOptionsItemSelected(item);
      

      【讨论】:

      • 我已经使用ListView 实现了抽屉式导航,是的,我已经以这种方式实现了ListViewOnItemClickListener private class DrawerItemClickListener implements ListView.OnItemClickListener { public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) { selectItem(position); } }
      • 我不明白如何为动作按钮和溢出实现点击监听?我是否应该将当前onOptionsItemSelected 函数中的代码替换为Android 开发人员指南(developer.android.com/guide/topics/ui/actionbar.html) 中的示例代码?
      • 我听取了您的建议并修改了代码以使其正常工作。感谢您的帮助!
      猜你喜欢
      • 1970-01-01
      • 2013-05-20
      • 1970-01-01
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-11
      相关资源
      最近更新 更多