5

我有带有 ActionBarScherlock 的应用程序,我使用 ACRA。我收到一些用户的崩溃报告,错误如下:

"java.lang.RuntimeException: Binary XML file line #20: You must supply a layout_height attribute.
    at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:491)
    at android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:3602)
    at android.view.ViewGroup$LayoutParams.<init>(ViewGroup.java:3554)
    at android.widget.AbsListView$LayoutParams.<init>(AbsListView.java:4322)
    at android.widget.AbsListView.generateLayoutParams(AbsListView.java:4116)
    at android.widget.AbsListView.generateLayoutParams(AbsListView.java:74)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
    at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:332)
    at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
    at android.webkit.WebTextView$AutoCompleteAdapter.getView(WebTextView.java:650)
    at android.widget.AbsListView.obtainView(AbsListView.java:1430)
    at android.widget.AutoCompleteTextView$DropDownListView.obtainView(AutoCompleteTextView.java:1548)
    at android.widget.ListView.measureHeightOfChildren(ListView.java:1216)
    at android.widget.AutoCompleteTextView.buildDropDown(AutoCompleteTextView.java:1376)
    at android.widget.AutoCompleteTextView.showDropDown(AutoCompleteTextView.java:1140)
    at android.widget.AutoCompleteTextView.updateDropDownForFilter(AutoCompleteTextView.java:1022)
    at android.widget.AutoCompleteTextView.onFilterComplete(AutoCompleteTextView.java:1005)
    at android.widget.Filter$ResultsHandler.handleMessage(Filter.java:285)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:130)
    at android.app.ActivityThread.main(ActivityThread.java:3717)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
    at dalvik.system.NativeStart.main(Native Method)"

当然我试过google它,发现它很可能是由ActionBarScherlock引起的(我注意到遇到这个错误的每个用户都使用android 2.3.*)但还没有找到解决方案。我无法在我自己的 2.3.* 设备上重现此错误,这有点令人不安...

那么,是什么导致了这个错误呢?

4

4 回答 4

14

在我的情况下,这是由于 ActionBarsherlock 的问题。

在我的 Android 清单中,我有 android:theme="@style/AppTheme" 然后当你转到样式时,我看到我的 AppTheme 的父级是“AppBaseTheme”。这就是问题所在!

<style name="AppTheme" parent="AppBaseTheme">

我把它改成了

<style name="AppTheme" parent="Theme.Sherlock">

我的问题就解决了。

于 2013-03-29T12:40:22.307 回答
2

layout_height这种情况下, 定义为?attr/actionBarSizewhich 是一个主题属性,其值@dimen/action_bar_height在三个位置定义:values/values-land/values-sw600dp/

这通常是由修改过资源系统的 OEM 造成的,导致该链的某些方面无法正确加载。据我所知,我们真的无能为力。

于 2013-01-25T20:54:37.007 回答
2

我有同样的问题,并通过更改来解决AndroidManifest.xml。您必须将特定活动或完整应用程序的主题设置为Theme.Sherlock.Light(我认为您只能指定Theme.Sherlock)。

在代码中它将是:

<application 
    ... 
    android:theme="@style/Theme.Sherlock.Light">

或者

<activity
    ... 
    android:theme="@style/Theme.Sherlock.Light">
于 2013-03-11T01:39:20.660 回答
2

我们的 #1 崩溃之一来自此问题,尤其是在 ZTE 设备上。虽然操作栏在大多数屏幕上都可以工作,但当用户与 Webview Edittext/InputBox 交互时,我们会遇到此崩溃。崩溃是由于 Webview 上的自动完成而发生的。禁用自动完成似乎可以消除崩溃。为什么自动完成应该与 Actionbar 有任何关系仍然是一个谜。

在这里,我们仅为 ZTE 设备禁用自动完成功能。如果我们在其他设备上遇到问题,我们可能会在稍后展开列表。

    public static boolean disableWebViewAutoCompleteForDevicesThatCrash(WebView webView)
{
    // We may add some other bizarre devices to this list if the ZTE fix works well.
    if ("ZTE".equals(Build.MANUFACTURER))
    {
        webView.getSettings().setSaveFormData(false);
        webView.clearFormData();
        return true;
    }
    else
    {
        return false;
    }
}
于 2013-09-09T18:51:05.503 回答