[英]I need to start activity using my SearchView widget on my actionbar
当用户在Search Widget上按Enter时,我需要启动我的活动SearchResultsActivity
。 每当我单击如下所示的menu_search
,我就已经间接调用了onSearchRequested
函数。
<item
android:id="@+id/menu_search"
android:title="@string/menu_search"
appcompat:actionViewClass="android.support.v7.widget.SearchView"
appcompat:showAsAction="always" />
每当我输入查询然后输入/搜索都不会发生。 我设置了清单文件,如下所示:
<!-- Main activity -->
<activity
android:name=".ui.activity.MainActivity"
android:label="@string/app_name" >
<meta-data
android:name="android.default.searchable"
android:value=".SearchResultsActivity"/>
</activity>
<!-- Search Results Activity -->
<activity
android:name=".ui.activity.SearchResultsActivity"
android:label="@string/search_results_activity_title">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
主要活动是我执行搜索的地方,SearchResultsActivity接收我的搜索查询。 目前,我对此并不担心。 我只想通过搜索打开我的SearchResultsActivity。 我尝试了一些技巧,例如覆盖onOptionsItemSelected
case R.id.menu_search:
Intent searchIntent = new Intent(MainActivity.this, SearchResultsActivity.class);;
startActivity(searchIntent);
break;
这仍然没有调用我的搜索活动。 我还将可搜索配置与onCreateOptionsMenu上的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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.