"属性引用太多"警告

时间:2014-06-17 11:55:55

标签: android android-layout android-framework

我有一个应用程序,其中一些片段只包含ListViews。我的一些低端设备用户会遇到一种现象,即片段根本无法显示数据。当他们进入片段时,我会显示一个ProgressBar,这个ProgressBar似乎永远旋转。

所以我买了一台低端设备,面临同样的问题。我通过网络请求获取ListView的数据到我的后端API,但答案永远不会返回。我到目前为止看到的唯一警告是

W/ResourceType﹕ Too many attribute references, stopped at: 0x01010034

我在网上找不到这个错误,但似乎这个警告记录在这里https://github.com/SciAps/android-frameworks-base/blob/c693209edc3696884c1fcd59790dda0b9811d017/libs/utils/ResourceTypes.cpp#L1573,但我不明白Android代码在那里做了什么。

任何人都知道这里发生了什么,问题是什么以及如何解决这个问题?

BTW 我使用RoboSpice和Retrofit来处理网络请求。在发出此警告后,将停止负责获取数据的后台服务,这就是我永远无法获取数据的原因。

编辑据我所知,没有看到数据与警告无关。无论如何,这个警告意味着什么,我该如何预防呢?

3 个答案:

答案 0 :(得分:13)

我不小心将一个样式作为主题应用于视图,导致出现此警告。在视图的XML中,使用style="@style/MyStyle"代替android:theme="@style/MyStyle"我能够停止警告。

答案 1 :(得分:2)

使用ContextThemeWrapper创建新的ElementViews时会发生这种情况

TextView txtView= new TextView(new ContextThemeWrapper(context, R.style.styleName));

答案 2 :(得分:2)

实际上,在我看来,@ Corclark最不赞成的答案并不完全准确。我得到了同样的警告,但是没有在任何地方设置style="@style/MyStyle"。我做了一些试验,发现实际上是这一行对我造成了警告:

android:theme="@style/My.Switch"

然后,我发现了this answer。将My.Switch的样式更改为

<style name="My.Switch" parent="">
    <item name="android:background">@color/dark_grey</item>
    <item name="colorAccent">@color/Unpluq</item>
</style>

为我解决了警告。希望它对某些人仍然有帮助。