onViewListener与SearchView无法正常工作

时间:2015-06-26 01:07:49

标签: android android-fragments searchview

我正在尝试使用Fragment中的支持库在searchview上设置一个监听器,但是出现了错误:无法找到onQueryTextListener。我的代码有什么问题吗?

onQueryTextListener肯定存在。

Java代码:

package com.example.yagamizero.myapplication;

import android.app.Fragment;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.view.MenuItemCompat;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.support.v7.widget.SearchView;

public class ArtistSearchFragment extends Fragment {
   SearchView searchView;
   public ArtistSearchFragment(){

   }
   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
       super.onCreate(savedInstanceState);
       getActivity().setContentView(R.layout.fragment_artist_search);
       View rootView = inflater.inflate(R.layout.fragment_artist_search, container, false);

       return rootView;
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

        super.onCreateOptionsMenu(menu,inflater);
        MenuItem searchItem = menu.findItem(R.id.action_search);
        searchView = (android.support.v7.widget.SearchView) MenuItemCompat.getActionView(searchItem);
        searchView.setOnQueryTextListener(searchQueryListener);

    }

    private onQueryTextListener searchQueryListener = new onQueryTextListener() {
        @Override
        public boolean onQuerySubmit(String query){

            return true;
        }
        public boolean onQueryTextChange(String newText){

            return true;
        }
    };
}

1 个答案:

答案 0 :(得分:1)

OnQueryTextListenerSearchView类中的嵌套接口,因此您需要像这样定义:

private SearchView.OnQueryTextListener searchQueryListener = new SearchView.OnQueryTextListener() {
    @Override
    public boolean onQueryTextSubmit(String query) {
        return false;
    }

    @Override
    public boolean onQueryTextChange(String newText) {
        return false;
    }
};