Android 用户单击SearchView后立即启动另一个活动

Android 用户单击SearchView后立即启动另一个活动,android,android-studio,searchview,Android,Android Studio,Searchview,我知道这是一个普遍的问题 但是,除非用户提交查询,否则每当用户单击searchView(而不是图标)时启动另一个活动是无效的 下面是功能代码,每当用户提交查询时,它就会启动另一个活动,然而,我想在用户单击searchView(扩展文本字段)后立即启动另一个活动 提前谢谢 xml 顺便说一句,我已经尝试过在OnOptions ItemSelected方法中编写if/switch语句来标识searchView id,然后使用意图。两者都不起作用 onCreate方法: Intent intent

我知道这是一个普遍的问题

但是,除非用户提交查询,否则每当用户单击searchView(而不是图标)时启动另一个活动是无效的

下面是功能代码,每当用户提交查询时,它就会启动另一个活动,然而,我想在用户单击searchView(扩展文本字段)后立即启动另一个活动

提前谢谢

xml

顺便说一句,我已经尝试过在OnOptions ItemSelected方法中编写if/switch语句来标识searchView id,然后使用意图。两者都不起作用

onCreate方法:

 Intent intent = getIntent();
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
        String query = intent.getStringExtra(SearchManager.QUERY);
        SearchRecentSuggestions suggestions = new SearchRecentSuggestions(this,
                MySuggestionProvider.AUTHORITY, MySuggestionProvider.MODE);
        suggestions.saveRecentQuery(query, null);
对于最近的查询建议,我在onCreate中确实有这样的内容,我不确定这是否是我的问题的原因。我假设,因为它最初被调用,所以它会抑制onOptionsItemSelected方法的属性?不确定

这里有一个用于菜单的xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:title="@string/action_settings"
    app:showAsAction="never" />

<item android:id="@+id/search"
    android:title="@string/title_activity_main_page"
    app:showAsAction="always"
    app:actionViewClass="android.support.v7.widget.SearchView"
    />


多亏了实现if length为0时的一些替代方法,启动一个新的活动,并设置setOnClickListener,这些方法都起了作用,但只有当我单击徽标时,当我将图标设置为false时,这些方法才起作用

考虑到普金的评论,我采取了一种不同的方法来解决我的问题。这是一个非常简单的方法,我去掉了SearchView,并将其改为EditText字段,允许在点击另一个活动时立即单击


非常感谢您为这个问题提供了不同的想法和解决方案。它们帮了我很大的忙,因为我稍后会引用它们,我现在知道哪些有效,哪些无效。

尝试在setOnQueryTextListener上使用SearchView,并在这个onQueryTextChange中检查长度是否等于0,然后切换到另一个活动尝试此操作,让我知道将一个侦听器放到您的视图中,以便开始另一个活动,当用户只单击一个SearchView,而不在其中键入任何文本时?为什么?为什么不使用searchView.setOnClickListener();?这是因为我对这两个活动有不同的目的,主要是因为搜索小部件仅用于显示,直到用户单击它。
 Intent intent = getIntent();
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
        String query = intent.getStringExtra(SearchManager.QUERY);
        SearchRecentSuggestions suggestions = new SearchRecentSuggestions(this,
                MySuggestionProvider.AUTHORITY, MySuggestionProvider.MODE);
        suggestions.saveRecentQuery(query, null);
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:title="@string/action_settings"
    app:showAsAction="never" />

<item android:id="@+id/search"
    android:title="@string/title_activity_main_page"
    app:showAsAction="always"
    app:actionViewClass="android.support.v7.widget.SearchView"
    />