首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android SearchView小部件不会启动searchableActivity

Android SearchView小部件不会启动searchableActivity
EN

Stack Overflow用户
提问于 2018-02-04 23:17:34
回答 2查看 44关注 0票数 0

我实际上是想从碎片中进行搜索。我只想显示用户试图使用SearchView小部件搜索的文本(带有一个Toast),该小部件膨胀到片段中。根据Android文档,当用户使用SearchView小部件执行搜索时,应用程序应该启动一个SearchableActivity。问题是我不能让它启动一个SearchableActivity。

这是我的Android宣言(用Berhan zikarge的答案编辑):

代码语言:javascript
运行
复制
        <activity
        android:name=".ClientActivity"
        android:screenOrientation="nosensor"
        android:label="@string/title_activity_client"
        android:windowSoftInputMode="stateAlwaysHidden|adjustPan">

        <meta-data android:name="android.app.default_searchable"
            android:value=".SearchableActivity" />
        </activity>
        <activity android:name=".SearchableActivity" >
            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
            </intent-filter>
            <meta-data android:name="android.app.searchable"
                android:resource="@xml/searchable"/>
        </activity>

下面是在ClientActivity中调用的片段:

代码语言:javascript
运行
复制
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_organisation_search, container, false);
        SearchView searchView = (SearchView) view.findViewById(R.id.search_view_id);
        searchView.setIconified(false);
        searchView.setIconifiedByDefault(false);
        searchView.requestFocus();
        return view;
    }

它膨胀的布局:

代码语言:javascript
运行
复制
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    >
    <android.support.v7.widget.SearchView
        android:id="@+id/search_view_id"

        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:label="@string/app_name"
        android:hint="@string/search_hint"
        android:background="@drawable/block"
        >

    </android.support.v7.widget.SearchView>


</ScrollView>

SearchableActivity.java:

代码语言:javascript
运行
复制
public class SearchableActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent = getIntent();
        if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
            String query = intent.getStringExtra(SearchManager.QUERY);
            doMySearch(query);
        }

    }
    //Here no log is displayed in logcat, and no Toast is shown on the app
    public void doMySearch(String query) {
        Toast.makeText(getBaseContext(), query+"wsh", Toast.LENGTH_SHORT).show();
        Log.e("The query : ",query);

    }
}

我已经在这个问题上胡思乱想了两个多小时了,如果有人有解决办法的话,我会感激的。

编辑,我让它工作,将这些代码添加到我的片段中:

代码语言:javascript
运行
复制
@Override
public boolean onQueryTextSubmit(String query) {

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

    return false;
}
EN

回答 2

Stack Overflow用户

发布于 2018-02-04 23:24:58

我认为您需要在发送搜索数据的活动中放置元数据标记,而不是接收数据的活动。ClientActivity应该有元数据标记:

代码语言:javascript
运行
复制
<!-- this activity enables the search dialog to initiate searches
     in the SearchableActivity -->
<activity android:name=".OtherActivity" ... >
    <!-- enable the search dialog to send searches to SearchableActivity -->
    <meta-data android:name="android.app.default_searchable"
               android:value=".SearchableActivity" />
</activity>
...

https://developer.android.com/guide/topics/search/search-dialog.html

票数 0
EN

Stack Overflow用户

发布于 2018-02-04 23:29:19

问题是客户机活动的元数据在活动标记之外。复制并粘贴清单中的以下代码

代码语言:javascript
运行
复制
 <activity
    android:name=".ClientActivity"
    android:screenOrientation="nosensor"
    android:label="@string/title_activity_client"
    android:windowSoftInputMode="stateAlwaysHidden|adjustPan">
    <meta-data android:name="android.app.default_searchable"
        android:value=".SearchableActivity" />
    </activity>

     <activity android:name=".SearchableActivity" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
            android:resource="@xml/searchable"/>
    </activity>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48613984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档