我一直在将我的应用转换为新的材料设计标准,并且已经用actionbarcompat取代了动作条sherlock。虽然我在应用程序中遇到了关于searchview小部件的奇怪问题。应用程序崩溃,因为每当我尝试获取操作视图时,返回的窗口小部件为null。这是在经过大量调试后确定的。当我注释掉导致崩溃的代码时,即使在明确设置为始终显示之后,搜索也会显示为溢出项而不是操作项。
这是菜单xml
<item
android:id="@+id/search"
app:actionViewClass="android.widget.SearchView"
android:icon="@android:drawable/ic_menu_search"
app:showAsAction="always|collapseActionView"
android:showAsAction="always|collapseActionView"
android:title="@string/title" />
而heres是代码部分,它夸大了菜单并尝试获取操作项。注释掉的行是抛出和错误的行以及之后的所有行 依赖于那个对象。
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.homescreen, menu);
MenuItem item=menu.findItem(R.id.search);
//SearchView sv = (SearchView) MenuItemCompat.getActionView(item);
//SearchManager manager = (SearchManager)getActivity().getSystemService(Context.SEARCH_SERVICE);
//sv.setSearchableInfo(manager.getSearchableInfo( newComponentName(getActivity().getApplicationContext(), SearchActivity.class)));
sv.setOnQueryTextListener(this);
sv.setIconifiedByDefault(false);
}
感谢您的帮助!
答案 0 :(得分:1)
变化:
app:actionViewClass="android.widget.SearchView"
到
app:actionViewClass="android.support.v7.widget.SearchView"
答案 1 :(得分:0)
好的,因此应用程序的问题最终导致导入非appcompat库的导入不匹配。我通过将所有内容切换到同一个包来修复此问题。所以使用了v7支持库。