在Android设备而非模拟器上投放错误

时间:2019-06-17 07:39:01

标签: codenameone

我从日志中看到android平板电脑出现以下错误。在Android中将组件转换为容器是否有任何问题?

1 个答案:

答案 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的外观,看看是否存在差异。