【问题标题】:Null pointer exception in searchview搜索视图中的空指针异常
【发布时间】:2013-07-27 23:02:59
【问题描述】:

我正在尝试在 shreyaloclistfragment 中创建列表搜索视图。我在下一行得到 NullPointerException

final SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();

我的方法是

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater ) {
    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate( R.menu.menu_search, menu);
    System.out.println( "inflating menu");

    final SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();



    final SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextChange(String newText) {
            showFilteredItems( newText );
            return true;
        }

        @Override
        public boolean onQueryTextSubmit(String query) {
            return true;
        }
    };

    searchView.setOnQueryTextListener(queryTextListener);

    return;
}

堆栈跟踪

FATAL EXCEPTION: main
java.lang.NullPointerException
at com.sears.syw.FragmentShopsTab.onCreateOptionsMenu(FragmentShopsTab.java:52)
at android.support.v4.app.Watson.onCreatePanelMenu(Watson.java:55)
at  


com.actionbarsherlock.ActionBarSherlock.callbackCreateOptionsMenu(ActionBarSherlock.java:559    )
at   

    com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchCreateOptionsMenu(ActionBarSh    erlockNative.java:65)
at 

【问题讨论】:

  • 所以....是menu.findItem(R.id.menu_search) null?
  • 充气过程出现问题,导致无法找到带有R.id.menu_search 的项目。错误的菜单 xml?
  • 不...我正在尝试复制这个 (stackoverflow.com/questions/7230893/…) 我的 eml 文件
  • 你不能在菜单 xmls 中有布局。
  • 你可以reference layouts see answer。

标签: android listview android-fragments searchview


【解决方案1】:

要从菜单 xml 中引用布局,请使用 actionLayout 属性:

<menu>
<item android:id="@+id/menu_name"
  android:actionLayout="@layout/your_layout"
  android:showAsAction="always"/>
</menu>

【讨论】:

  • 知道如何在片段中创建列表搜索视图吗?
  • 现在通过实现您的更改 java.lang.ClassCastException: android.widget.LinearLayout 无法在 com.sears.syw.FragmentShopsTab.onCreateOptionsMenu(FragmentShopsTab.java:52 ) at android.support.v4.app.Watson.onCreatePanelMenu(Watson.java:55) at com.actionbarsherlock.ActionBarSherlock.callbackCreateOptionsMenu(ActionBarSherlock.java:559) at
【解决方案2】:

如果您使用的是 Appcompat 库,可能您忘记在 menu_search.xml 中添加自己的 xmlns。

正如例子所说:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
<!-- Search, should appear as action button -->
<item android:id="@+id/action_search"
      android:icon="@drawable/ic_action_search"
      android:title="@string/action_search"
      yourapp:showAsAction="ifRoom"  />
</menu>

您需要添加以下内容:

<item android:id="+@id/..."
      android:actionViewClass="android.widget.SearchView"
      yourapp:actionViewClass="android.widget.SearchView" />

来源:https://developer.android.com/training/basics/actionbar/adding-buttons.html#XML

【讨论】:

    【解决方案3】:

    我正在使用安卓工作室

    <menu 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"
        tools:context="com.app.myapp" >
    
        <item
            android:id="@+id/search"
            android:title="Buscar"
            android:icon="@drawable/ic_search"
            app:showAsAction="collapseActionView|ifRoom"
            android:actionViewClass="android.widget.SearchView"
            app:actionViewClass="android.widget.SearchView"/>
    
    </menu>
    

    找到 100%

    【讨论】:

    • 这是否意味着它已经解决了?因为我在您的 XML 中看到 id 是“搜索”,但您正在寻找“R.id.menu_search”。那不应该是“R.id.search”吗?
    • 不,android studio configure all in u android project,不只是菜单中的xml
    【解决方案4】:

    有时问题出在

    setHasOptionsMenu(true);
    

    将其从 oncreate 或 onviewcreate 移至 on attach 方法并尝试。

    【讨论】:

      【解决方案5】:

      如果您使用的是 AppCompat 库,则在您的 menu.xml 中添加

      app:actionViewClass="android.support.v7.widget.SearchView"
      

      而不是

      app:actionViewClass="android.widget.SearchView"
      

      【讨论】:

      • 嗨。是否有一份 Google 文档说明了这一事实?
      • 非常感谢!在我的情况下工作:)
      【解决方案6】:

      检查这个答案 您使用了错误的命名空间或导入了错误的类 https://stackoverflow.com/a/38702262/5374951

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多