Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.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
Java 我需要使用actionbar上的SearchView小部件启动活动_Java_Android_Android Layout_Android Intent_Android Activity - Fatal编程技术网

Java 我需要使用actionbar上的SearchView小部件启动活动

Java 我需要使用actionbar上的SearchView小部件启动活动,java,android,android-layout,android-intent,android-activity,Java,Android,Android Layout,Android Intent,Android Activity,当用户按下屏幕上的enter键时,我需要启动我的activitySearchResultsActivity。每当我点击我的菜单\u search时,我的onSearchRequested函数就会被间接调用,如下所示 <item android:id="@+id/menu_search" android:title="@string/menu_search" appcompat:actionViewClass="android.support.v7.widget.Se

当用户按下屏幕上的enter键时,我需要启动我的activity
SearchResultsActivity
。每当我点击我的
菜单\u search
时,我的
onSearchRequested
函数就会被间接调用,如下所示

<item
    android:id="@+id/menu_search"
    android:title="@string/menu_search"
    appcompat:actionViewClass="android.support.v7.widget.SearchView"
    appcompat:showAsAction="always" />
这仍然不调用我的搜索活动。我还将可搜索配置与OnCreateOptions菜单上的SearchView相关联

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

    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

    searchView.setIconifiedByDefault(false);
添加此代码将返回一个
java.lang.ClassCastException

java.lang.ClassCastException: android.support.v7.widget.SearchView cannot be cast to android.widget.SearchView
        at com.nauv.jambomall.ui.activity.MainActivity.onCreateOptionsMenu(MainActivity.java:205)
        at android.app.Activity.onCreatePanelMenu(Activity.java:2578)
        at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:277)
        at android.support.v7.internal.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:84)
        at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallback.onCreatePanelMenu(AppCompatDelegateImplBase.java:251)
        at android.support.v7.app.AppCompatDelegateImplV7.preparePanel(AppCompatDelegateImplV7.java:1089)
        at android.support.v7.app.AppCompatDelegateImplV7.doInvalidatePanelMenu(AppCompatDelegateImplV7.java:1374)
        at android.support.v7.app.AppCompatDelegateImplV7.access$100(AppCompatDelegateImplV7.java:89)
        at android.support.v7.app.AppCompatDelegateImplV7$1.run(AppCompatDelegateImplV7.java:126)
        at android.os.Handler.handleCallback(Handler.java:730)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5414)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
        at dalvik.system.NativeStart.main(Native Method)

有人知道我做错了什么吗?谢谢。

我猜您选择了错误的导入,您应该导入

import android.support.v7.widget.SearchView;
而不是

import android.widget.SearchView;

我已经用这里的答案解决了这个问题。 以前使用

searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
我假设当前活动是可搜索的活动。我所要做的就是添加这个代码

ComponentName sa = new ComponentName(this, SearchResultsActivity.class);

然后将我的搜索活动设置为
SearchResultsActivity

您可以在这里找到好的示例[1]:谢谢,先生!这帮助我解决了我的
java.lang.ClassCastException
,但搜索仍然没有打开。我的结果活动。请共享代码和错误日志。这将帮助我解决问题。目前我没有收到任何错误。代码的其他部分有助于解决此问题吗?请共享您的完整代码,并告诉我您面临的问题…然后只有我才能解决您的代码集,并将其作为您问题的答案。。。因为首先你们遇到了
classcast异常
,我的答案解决了这个问题。所以把它作为答案。
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
ComponentName sa = new ComponentName(this, SearchResultsActivity.class);