Rum*_*raK 7 layout android exception adt
我的问题是加载XML中定义的字符串数组在应用程序中工作,但会导致ADT图形布局预览中的错误.
现在,由于此错误,我无法在图形布局中看到任何图形,并且很难与其他图形一起使用.但是如果我构建并运行我的应用程序,视图正在加载并显示字符串.
所以我想我的代码是正确的但是:
我有一个自定义视图,我在array.xml文件中获取由我定义的数组.
public class ScoreTable extends View {
[...]
@Override
protected void onDraw(Canvas canvas) {
[...]
int score_vals[] = getResources().getIntArray(R.array.score_vals);
[...]
}
[...]
}
Run Code Online (Sandbox Code Playgroud)
我的数组在res/values/array.xml中定义:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="score_vals">
<item >10</item>
<item >20</item>
<item >50</item>
</array>
</resources>
Run Code Online (Sandbox Code Playgroud)
图形布局为空白,并说:
Int array resource ID #0x7f050000
Exception details are logged in Window > Show View > Error Log
Run Code Online (Sandbox Code Playgroud)
但当然我有"public static final int score_vals = 0x7f050000;" 在R.java!
此错误的详细信息是50深度堆栈,但重新开始:
android.content.res.Resources$NotFoundException: Int array resource ID #0x7f050000
at android.content.res.Resources.getIntArray(Resources.java:405)
at com.threecats.poker.ScoreTable.onDraw(ScoreTable.java:53)
at android.view.View.draw(View.java:6740)
[...]
Run Code Online (Sandbox Code Playgroud)
那么,getResources().getXXXArray()应该在ADT图形布局预览的上下文中工作吗?
我想提一下,我在XML中尝试使用"array"和"array-integer",并且都在应用程序中工作,但在预览中不工作.此外,我试图从私有Context成员的视图的构造函数中保存Context ...也没有帮助.
And*_*ich 10
你的代码没问题,但不幸的是ADT插件中仍然存在一些错误,其中有一个.布局编辑器在渲染自定义视图时遇到麻烦.我有同样的问题,我发现的唯一的锻炼是检查View.isInEditMode并以其他方式初始化int数组,但不是来自资源.所以你的代码看起来像这样:
int score_vals[];
if (isInEditMode()) {
score_vals = { 10, 20, 50 };
} else {
score_vals = getResources().getIntArray(R.array.score_vals);
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,不要在方法中创建或加载任何资源onDraw
.我想getResources().getIntArray
使用某种缓存,但无论如何,你的性能可能会受到影响.
归档时间: |
|
查看次数: |
3974 次 |
最近记录: |