Axx*_*iss 45 android android-searchmanager android-support-library
这是几天前的工作,但突然停止了.我只想在某些片段可见时使用操作栏搜索小部件.
现在我无法得到SearchView
,现在getActionView
总是返回null.
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_for_places">
</searchable>
Run Code Online (Sandbox Code Playgroud)
的Manifest.xml
<activity
android:name=".ui.activities.MainActivity"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<action android:name="android.intent.action.SEARCH"/>
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable"/>
<meta-data
android:name="android.app.default_searchable"
android:value=".ui.activities.MainActivity" />
</activity>
Run Code Online (Sandbox Code Playgroud)
menu.xml文件
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:myapp="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_search_place"
android:icon="@drawable/ic_2_action_search"
android:orderInCategory="1"
android:title="@string/title_search"
myapp:showAsAction="collapseActionView|ifRoom"
myapp:actionViewClass="android.support.v7.widget.SearchView"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
片段
...
setHasOptionsMenu(true);
...
@Override
public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
inflater.inflate(R.menu.menu, menu);
MenuItem searchItem = menu.findItem(R.id.action_search_place);
mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);
SearchManager searchManager = (SearchManager) getBaseActivity().getSystemService(Context.SEARCH_SERVICE);
if (mSearchView != null) {
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
mSearchView.setIconifiedByDefault(true);
mSearchView.setOnQueryTextListener(this);
}
super.onCreateOptionsMenu(menu, inflater);
}
Run Code Online (Sandbox Code Playgroud)
max*_*ron 115
我有同样的问题,因为在我使用的菜单中:
android:actionViewClass="android.widget.SearchView"
根据谷歌文档.
事实证明,如果我使用AppCompatActivity,我应该使用
app:actionViewClass="android.widget.SearchView"
.
希望这有助于某人.
tom*_*ozb 31
如果你正在使用proguard,这是可能的答案:https://code.google.com/p/android/issues/detail? id = 58508
简而言之,在您的proguard配置文件中添加以下行proguard-rules.pro
.
-keep class android.support.v7.widget.SearchView { *; }
Run Code Online (Sandbox Code Playgroud)
Bor*_*jev 17
今天我遇到了同样的问题,我想我已经解决了.事实证明,我做了几件与ActionBarCompat
合同不完全相符的事情:
ActionBarCompat
都应该扩展ActionBarActivity
而不是FragmentActivity
直接扩展ActionBarCompat
都应将其主题声明为继承自ActionBarCompat
主题.我发现这两个人都在观看谷歌的解说视频.
现在我searchView
是不是null
了.
小智 8
我修复了它:在菜单xml中,我使用了app命名空间:
app:showAsAction="collapseActionView|always"
app:actionViewClass="android.support.v7.widget.SearchView"
Run Code Online (Sandbox Code Playgroud)
Android的教程https://developer.android.com/training/search/setup.html使用android:showAs和android:actionView ...
归档时间: |
|
查看次数: |
28286 次 |
最近记录: |