java - 在同一 Activity 中从工具栏搜索 View 获取查询字符串?

标签 java android search android-toolbar

我必须在没有监听器的帮助下在同一 Activity 中获取搜索 View 查询文本。所以到目前为止我所做的。

menu.xml

  <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:id="@+id/search"
              android:title="@string/search_title"
              android:icon="@drawable/ic_search"
              android:showAsAction="collapseActionView|ifRoom"
              android:actionViewClass="android.widget.SearchView" />
    </menu>

list

<activity android:name=".MainActivty" 
            android:launchMode="singleTop">
            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
            </intent-filter>
            <meta-data android:name="android.app.searchable"
                android:resource="@xml/searchable" />
</activity>

searchable.xml

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:hint="Hint"
    android:label="Label"></searchable>

并在MainActivty中重写如下

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options_menu, menu);

    // Associate searchable configuration with the SearchView
    SearchManager searchManager =
           (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView =
            (SearchView) menu.findItem(R.id.search).getActionView();
    searchView.setSearchableInfo(
            searchManager.getSearchableInfo(getComponentName()));

    return true;
}
    @Override
    protected void onNewIntent(Intent intent) {
        setIntent(intent);
        handleIntent(intent);
    }

    private void handleIntent(Intent intent) {
        if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
          String query = intent.getStringExtra(SearchManager.QUERY);
          // Do work using string
        }
    }

用户按下搜索键后仍然无法获取搜索查询。我做错了什么。如果有人知道请帮助我。谢谢。

最佳答案

您好,我的 menu.xml 遇到了同样的问题

 <menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/search"
        android:icon="@drawable/ic_search"
        android:title="@string/search_title"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="collapseActionView|ifRoom" />
</menu>

我改变了:

android:showAsAction="collapseActionView|ifRoom" android:actionViewClass="android.widget.SearchView"

与:

app:actionViewClass="android.support.v7.widget.SearchView" app:showAsAction="collapseActionView|ifRoom"

问题是我正在使用 AppcompatActivity 并且需要支持 v7 SearchView。

希望这有帮助。

关于java - 在同一 Activity 中从工具栏搜索 View 获取查询字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33476284/

相关文章:

java - 如何处理写入 CSV 文件的字段中的输入键?

java - 使用智能卡在我的 Java 表单中输入 UserID

java - 将 windows.h HANDLE 返回到 Java JNI

Telephony.TextBasedSmsColumns 中的 Android 传递信息

search - Elasticsearch 查询最大值聚合

elasticsearch - 使用function_score时如何向弹性查询添加过滤器?

java - 如何监听 OutOfMemoryError 并退出 JVM

android - 如何更改数组适配器中包含的 TextView 中的值

java - Android 在尝试从 YouTube 获取数据时崩溃?

search - 在 Notepad++ 中复制搜索命中的所有行