我将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,有没有人有任何想法?
答案 0 :(得分:2)
问题在于我使用的是Choice.IMPLICIT
,对于ChoiceGroup不存在,但对于List。
更改Choice.EXCLUSIVE
工作正常。
答案 1 :(得分:0)
我的主要错误是我认为你的MIDlet中没有使用适当的logging。这使得调试你所描述的问题变得多么复杂。您发布的代码段中的错误。
从您发布的代码段和您的解释看起来intBloggerLength
值不是常量。再加上你提到的有问题的行中调用ChoiceGroup构造函数的方式,这看起来是获得IllegalArgumentException
的可靠方法。
try-catch
并将适当的日志记录代码放入catch块中,您可以自己找到,但由于您没有这样做,我们只能猜测。请注意,如果您在模拟器中进行测试,则还有可能在其控制台中显示异常消息和堆栈跟踪。要了解如何获得该异常,请参阅API javadocs了解您使用的构造函数:
<强>抛出:强>
...IllegalArgumentException
- 如果imageElements
数组为非null且与stringElements数组的长度不同...
在API文档中列出的异常还有其他三个可能的原因,但我会集中在您的代码段看起来非常滑的地方。
让我们回顾一下你的代码,图像数组长度为6:{null, null, null, null, null, null}
- 这意味着只要intBloggerLength
与6不同,就会抛出IAE。
要解决此问题,最简单的方法是传递null
值而不是图像数组。或者,如果您需要数组不为null,只需编写代码以使其具有有效长度,例如
new Image[menuItems.length]