android - menu.xml 中的 ActionbarSherlock SearchView 给出 Resources$NotFoundException

标签 android actionbarsherlock

当我尝试将 ActionbarSherlock SearchView 添加到我的 ActionBar 时,应用程序在应显示 Activity 时立即崩溃。为此,我在 LogCat 中发现了以下内容:

10-22 21:22:51.070: W/MenuInflater(21873): Cannot instantiate class: com.actionbarsherlock.widget.SearchView
...
10-22 21:22:51.070: W/MenuInflater(21873): Caused by: java.lang.reflect.InvocationTargetException
10-22 21:22:51.070: W/MenuInflater(21873):  at java.lang.reflect.Constructor.constructNative(Native Method)
10-22 21:22:51.070: W/MenuInflater(21873):  at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
10-22 21:22:51.070: W/MenuInflater(21873):  at android.view.LayoutInflater.createView(LayoutInflater.java:587)
10-22 21:22:51.070: W/MenuInflater(21873):  ... 32 more
10-22 21:22:51.070: W/MenuInflater(21873): Caused by: android.content.res.Resources$NotFoundException: Resource is not a ColorStateList (color or path): TypedValue{t=0x2/d=0x7f01001f a=-1}
10-22 21:22:51.070: W/MenuInflater(21873):  at android.content.res.Resources.loadColorStateList(Resources.java:2035)
10-22 21:22:51.070: W/MenuInflater(21873):  at android.content.res.TypedArray.getColorStateList(TypedArray.java:342)
10-22 21:22:51.070: W/MenuInflater(21873):  at android.widget.TextView.<init>(TextView.java:768)
10-22 21:22:51.070: W/MenuInflater(21873):  at android.widget.TextView.<init>(TextView.java:442)

当我将常规 android.widget.SearchView 用于 android:actionViewClass 时,一切正常。 我关注了tutorial来自 Android 网站。

这是我的菜单xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/menu_search"
        android:actionViewClass="com.actionbarsherlock.widget.SearchView"
        android:icon="@drawable/ic_action_search"
        android:showAsAction="ifRoom|collapseActionView"
        android:title="@string/menu_search"/>

    <item android:id="@+id/menu_add_page"
        android:title="@string/menu_add_page"
        android:icon="@drawable/ic_action_add"
        android:showAsAction="always" />

    <item android:id="@+id/menu_settings"
        android:title="@string/menu_settings"
        android:showAsAction="never" />
</menu>

这是相关代码:

public boolean onCreateOptionsMenu(Menu menu) {
    getSupportMenuInflater().inflate(R.menu.activity_overview, menu);

    // Get the SearchView and set the searchable configuration
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

    return true;
}

这是一个(已知的)错误,还是我在这里遗漏了什么?

最佳答案

此问题是由于 v-14 版本的 Sherlock 主题缺少某些属性导致的。

我通过添加修复了它

<item name="textColorPrimary">@color/abs__primary_text_holo_light</item>
<item name="textColorPrimaryInverse">@color/abs__primary_text_holo_dark</item>

到 Sherlock 主题,它再次运行得很漂亮。不确定是否是理想的解决方案,但目前它有效:)

关于android - menu.xml 中的 ActionbarSherlock SearchView 给出 Resources$NotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13018794/

相关文章:

java - 编写自定义 Android ViewAction 以截取屏幕截图

java - Android:如何用多行长的项目拆分一个很长的字符串?

android - 上下文操作模式自定义行为

android - 使用选项卡在 ActionBar 中调用 onCreateOptionsMenu 的次数太多

android - 从在actionbarstylegenerator上创建的操作栏更改应用程序的标题颜色

android - SherlockFragment 的 Activity

android - WIFI Direct 和 3G 数据 session 可以同时工作吗?

android - 使用相同的动画隐藏和显示多个 View

java - Android 默认按钮点击效果不显示

actionbarsherlock - Android Studio 和 ProGuard - 无法写入资源 [META-INF/MANIFEST.MF](重复的 zip 条目 [volley.jar :META-INF/MANIFEST. MF])