无法获取android中搜索栏中输入的文本

无法获取android中搜索栏中输入的文本,android,search,android-toolbar,Android,Search,Android Toolbar,我正在尝试为我的android应用程序实现搜索功能。我无法获取在搜索栏中输入的文本。我已经尝试了SO中提到的所有方法。请让我知道我犯了什么错误。我挣扎了很久 我的代码: @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater = getActivity

我正在尝试为我的android应用程序实现搜索功能。我无法获取在搜索栏中输入的文本。我已经尝试了SO中提到的所有方法。请让我知道我犯了什么错误。我挣扎了很久

我的代码:

  @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater = getActivity().getMenuInflater();
        inflater.inflate(R.menu.menu_activity_for_fragments, menu);

        SearchManager searchManager = (SearchManager)
                getActivity().getSystemService(Context.SEARCH_SERVICE);
        searchMenuItem = menu.findItem(R.id.search);
        searchView = (SearchView) searchMenuItem.getActionView();

        searchView.setSearchableInfo(searchManager.
                getSearchableInfo(getActivity().getComponentName()));
      enteredText = (String) searchView.getQuery();

        Log.d("iFocus", "" + enteredText);
        searchView.setSubmitButtonEnabled(true);

       searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
           @Override
           public boolean onQueryTextSubmit(String query) {
               Log.d("iFocus", ""+searchView.getQuery());

               if (0 != searchView.getQuery().length()) {
                   String spnId = searchView.getQuery().toString();
                   setSearchResult(spnId);
               } else {
                   setData();
               }


               return true;
           }

           @Override
           public boolean onQueryTextChange(String newText) {

               Log.d("iFocus", ""+newText.toString());
               adapter.getFilter().filter(newText);

               return true;
           }
       });


    }

欢迎所有建议。提前感谢。

为什么不在被重写的方法onquerytext中使用您变成的参数来获得如下查询:

@Override
public boolean onQueryTextSubmit(String query) {
    Log.d("iFocus", query);

    if (0 != query.length()) {
         setSearchResult(query);
    } else {
         setData();
    }

    return true;
} 

请参阅我的示例项目,其中包含工具栏和搜索菜单项,最小API级别=7:


我也在做同样的事情,searchView.getQuery没有返回我任何东西。嗯,你能调试代码并告诉我在
onQueryTextSubmit
方法中
query
参数的值是多少吗?当我调试控件时,它永远不会转到该方法,当我输入文本时,它应该转到该方法,对吗?我认为当你提交搜索查询时(从方法签名来看),它会转到该方法。尝试在查询后点击enter,它应该进入Method。你能告诉我你是如何使用serach_layout.xml的吗??你是在片段中膨胀它吗?不,我不是在代码中膨胀它,这是android:actionLayout属性,这意味着在点击正确的代码时展开布局,再试一次,别忘了调用SetHasOptions菜单(true);在onActivityCreated MethodEdit answer中,请参见示例项目