我从日志中看到android平板电脑出现以下错误。在Android中将组件转换为容器是否有任何问题?
答案 0 :(得分:1)
正如我在评论中所写,我不知道为什么会有这个强制转换错误:因为日志中的类名被混淆(Proguard,Android默认使用),请尝试暂时将其禁用以日志更易读(我指的是构建提示android.enableProguard=false
)。
我的Codename One代码中有很多强制转换。通常,在这种情况下,我使用如下代码:
Container myCnt = new Container();
myCnt.add(new Label("Test"));
myCnt.add(new Container());
for (Component cmp : myCnt.getChildrenAsList(true)) {
if (cmp instanceof Container) {
Container myChildCnt = (Container) cmp;
// do what I need with myChildCnt
} else {
Log.p("cmp is not a Container, it is: " + cmp, Log.WARNING);
}
}
与代码唯一的显着区别是用于调查转换错误的日志。在这种情况下,日志为:
[EDT] 0:0:0,76 - cmp is not a Container, it is: Label[x=0 y=0 width=0 height=0 name=null, text = Test, gap = 2]
请记住在模拟器中尝试Android和iPhone的外观,看看是否存在差异。