Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法使SearchActivity启动_Android_Android Intent_Searchview - Fatal编程技术网

Android 无法使SearchActivity启动

Android 无法使SearchActivity启动,android,android-intent,searchview,Android,Android Intent,Searchview,我尝试在操作栏中创建SearchView,以启动已注册的SearchResultsActivity,以处理操作搜索。我做了所有必要的步骤,但仍然没有工作 代码如下: 1.搜索视图菜单项:menu/main.xml 4.添加新活动SearchResultsActivity并将其标记为处理搜索操作: 公共类SearchResultsActivity扩展了ListActivity{ public static final String TAG = SearchResultsActivity.c

我尝试在操作栏中创建SearchView,以启动已注册的SearchResultsActivity,以处理操作搜索。我做了所有必要的步骤,但仍然没有工作

代码如下:

1.搜索视图菜单项:menu/main.xml 4.添加新活动SearchResultsActivity并将其标记为处理搜索操作: 公共类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>
按下搜索键盘图标时,不会启动上述所有设置和搜索结果活动

我还应该做什么


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

Android教程似乎有误导性

答案如下:

使用android.support.v7.widget.SearchView避免SDK检查。
<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>
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;
}
    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"}));
    }
}
<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>