【问题标题】:Cannot able to make SearchActivity to start无法启动 SearchActivity
【发布时间】:2013-06-15 16:36:51
【问题描述】:

我尝试在操作栏中创建 SearchView 以启动一个 SearchResultsActivity,该活动已注册以处理 ACTION_SEARCH。我做了所有必需的步骤,但仍然没有工作!

代码如下:

1。搜索查看菜单项:(menu/main.xml)

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
            android:id="@+id/search_action"
            android:icon="@android:drawable/ic_menu_search"
            android:actionViewClass="android.widget.SearchView"
            android:showAsAction="always|collapseActionView"
            />
</menu>

2。可搜索配置(xml/searchable.xml):

<?xml version="1.0" encoding="utf-8"?>

<searchable xmlns:android="http://schemas.android.com/apk/res/android"
            android:label="@string/app_name"
            android:hint="@string/search_hint"/>

2.1 在AndroidManifest.xml中给MainActivity添加Searchable配置链接:

<activity
        android:name="com.me.searchonpre3.MainActivity"
        android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>

    <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable"/>
</activity>

3。将 Search View 菜单项与搜索配置(MainActivity.java)绑定:

public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){

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

        if (searchView != null) {
            searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        }
    }

    return true;
}

4。添加新的活动“SearchResultsActivity”并将其标记为处理 SEARCH_ACTIONs:

公共类 SearchResultsActivity 扩展 ListActivity {

    public static final String TAG = SearchResultsActivity.class.getSimpleName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Log.i(TAG, "In SearchResult OnCreate");

        setContentView(R.layout.activity_search_results);

        this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
                new String[]{"Product1", "Product2"}));
    }
}

AndroidMainfest.xml:

<activity
        android:name="com.me.searchonpre3.SearchResultsActivity"
        android:label="@string/title_activity_search_results">

    <intent-filter>
        <action android:name="android.intent.action.SEARCH"/>
    </intent-filter>

</activity>

上述所有设置和SearchResultsActivity在按下搜索键盘图标时没有启动。

我还应该做什么???

注意:当我添加 setOnQueryTextListener 时,会在 MainActivity 类上调用回调。

【问题讨论】:

  • 使用android.support.v7.widget.SearchView避免SDK检查。

标签: android android-intent searchview


【解决方案1】:

Android 教程似乎具有误导性。

答案在这里:https://stackoverflow.com/questions/11699206#11704661

【讨论】:

    猜你喜欢
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 2018-02-22
    • 1970-01-01
    相关资源
    最近更新 更多