1

我将 XML 解析为自定义博客类数组,我试图在屏幕上显示我的博客类的 .name 属性的 ChoiceGroup。

for(int i = 0; i< intBloggerLength; i++)
    {
        menuItems[i] = myXMLParser.arrBloggers[i].getName();
        //lstView.append(myXMLParser.arrBloggers[i].getName().toString(), null);
    }
String strPause = "";
grpMenuItems = new ChoiceGroup("Bloggers", Choice.IMPLICIT, menuItems,
       new Image[] {null, null, null, null, null, null});

grpMenuItems =...”是错误的行,使我的 MIDlet 崩溃,我一直在网上关注示例,并且我正在以相同的方式填充 ChoiceGroup,有人有什么想法吗?

4

2 回答 2

3

问题是我使用的是Choice.IMPLICITChoiceGroup 不存在的,但 List 不存在的。

改变Choice.EXCLUSIVE工作正常。

于 2012-12-28T17:25:14.990 回答
-2

您的主要错误是我认为没有在您的 MIDlet 中使用适当的登录。这使得调试像你描述的问题变得不必要的复杂。您发布的代码段中的错误。

  • 正确完成日志记录(如果您有兴趣,请参阅此处了解详细信息),您可以简单地在模拟器中运行您的 midlet 并检查控制台消息以找出是否预期的代码。

从您发布的代码片段和您的解释看来,intBloggerLength价值不是恒定的。再加上您在您提到的有问题的行中调用 ChoiceGroup 构造函数的方式,这看起来是获得IllegalArgumentException.

  • 如果您将这一行包装起来try-catch并将适当的日志记录代码放入 catch 块中,您可以自己发现这一点,但由于您没有这样做,我们只能猜测。请注意,如果您在模拟器中进行测试,也有可能在其控制台中显示异常消息和堆栈跟踪。

要了解如何获取该异常,请参阅您使用的构造函数的API javadocs :

抛出:
... IllegalArgumentException- 如果imageElements数组不为 null 并且与 stringElements 数组的长度不同...

API 文档中列出了引发异常的其他三个可能原因,但我将重点关注您的代码片段看起来很滑的一个原因。

让我们回顾一下您的代码,图像数组长度为 6:{null, null, null, null, null, null}- 这意味着只要intBloggerLength与 6 不同,就会抛出 IAE。

要解决这个问题,最简单的方法是传递null值而不是图像数组。或者,如果您需要数组不为空,只需编写代码使其具有有效长度,例如

new Image[menuItems.length]
于 2012-12-28T17:22:21.600 回答