搜索视图在android工具栏中无法正常工作 [英] Search-view not working correctly in android toolbar

查看:65
本文介绍了搜索视图在android工具栏中无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Flickr应用程序中使用搜索视图,但是当我运行时,它仅显示搜索视图的标题,而不是搜索图标,当我单击标题时,它应该显示并键入搜索查询的区域,但没有任何反应就像一个简单的工具栏项一样

I am using search view in my Flickr app but when I run, it just display the title of search view not it's search icon and when I click on the title it should display and area to type the search query but nothing happen it treat like a simple toolbar item

这是菜单xml文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:tools="http://schemas.android.com/tools"
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/menu_item_search"
        android:title="@string/search"
        app:actionViewClass="android:support.v7.widget.searchView"
        app:showAsAction="ifRoom"/>

    <item android:id="@+id/menu_item_clear"
          android:title="@string/clear_search"
          app:showAsAction="never"/>
</menu>

这是模拟器中应用程序的图片

and this is a picture of app in emulator

当我引用代码并为搜索视图操作视图类设置文本侦听器时,它引用空引用错误

and when I refer to code and set a text listener for search view action view class it refer a null reference error

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);

        inflater.inflate(R.menu.fragment_photo_gallery,menu);

        MenuItem searchItem = menu.findItem(R.id.menu_item_search);

        final SearchView searchView = (SearchView) searchItem.getActionView();

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String s) {

                Log.d(TAG,"QueryTextSubmit: "+s);
                updateItems();
                return true;

            }

            @Override
            public boolean onQueryTextChange(String s) {

                Log.d(TAG,"queryTextChanged: "+s);
                return true;
            }
        });


    }

这是崩溃后我的日志

09-05 15:04:25.759 14339-14339/com.bignerdranch.android.photogallery E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                       Process: com.bignerdranch.android.photogallery, PID: 14339
                                                                                       java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.SearchView.setOnQueryTextListener(android.support.v7.widget.SearchView$OnQueryTextListener)' on a null object reference
                                                                                           at com.bignerdranch.android.photogallery.PhotoGalleryFragment.onCreateOptionsMenu(PhotoGalleryFragment.java:71)
                                                                                           at android.support.v4.app.Fragment.performCreateOptionsMenu(Fragment.java:2291)
                                                                                           at android.support.v4.app.FragmentManagerImpl.dispatchCreateOptionsMenu(FragmentManager.java:3011)
                                                                                           at android.support.v4.app.FragmentController.dispatchCreateOptionsMenu(FragmentController.java:328)
                                                                                           at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:363)
                                                                                           at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:98)
                                                                                           at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:335)
                                                                                           at android.support.v7.app.AppCompatDelegateImplV9.preparePanel(AppCompatDelegateImplV9.java:1368)
                                                                                           at android.support.v7.app.AppCompatDelegateImplV9.doInvalidatePanelMenu(AppCompatDelegateImplV9.java:1648)
                                                                                           at android.support.v7.app.AppCompatDelegateImplV9$1.run(AppCompatDelegateImplV9.java:137)
                                                                                           at android.os.Handler.handleCallback(Handler.java:751)
                                                                                           at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                           at android.os.Looper.loop(Looper.java:154)
                                                                                           at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                                                           at java.lang.reflect.Method.invoke(Native Method)
                                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)

推荐答案

As Commented You need to write android:support.v7.widget.SearchView to address the appropriate class naming convention

,还添加了collapseActionView|折叠功能

<item
        android:id="@+id/menu_item_search"
        android:title="@string/search"
        app:actionViewClass="android:support.v7.widget.SearchView"
        app:showAsAction="collapseActionView|ifRoom"/>

这篇关于搜索视图在android工具栏中无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆