Java me 初始化ChoiceGroup+;J2ME MIDlet

Java me 初始化ChoiceGroup+;J2ME MIDlet,java-me,initialization,midp,lcdui,midlet,Java Me,Initialization,Midp,Lcdui,Midlet,我将XML解析为一个自定义blogger类数组,通过这个数组,我试图在屏幕上显示blogger类的.name属性的ChoiceGroup for(int i = 0; i< intBloggerLength; i++) { menuItems[i] = myXMLParser.arrBloggers[i].getName(); //lstView.append(myXMLParser.arrBloggers[i].getName().toString

我将XML解析为一个自定义blogger类数组,通过这个数组,我试图在屏幕上显示blogger类的.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});
for(int i=0;i

grpMenuItems=
…”是一行出错的代码,使我的MIDlet崩溃,我一直在网上跟踪示例,并以同样的方式填充ChoiceGroup,有人有什么想法吗?

我认为在MIDlet中使用不合适的方法是你的主要错误。这使得调试您描述的问题变得不必要的复杂。您发布的代码片段中存在错误

  • 在正确完成日志记录后(如果您感兴趣的话),您只需在emulator中运行midlet并检查控制台消息,以确定是否需要预期的代码
从您发布的代码片段和解释来看,
intBloggerLength
值不是常量。再加上您在您提到的有问题的行中调用ChoiceGroup构造函数的方式,这看起来是获得
IllegalArgumentException
的可靠方法

  • 如果您将这一行包装到
    try catch
    中,并将适当的日志代码放入catch块中,您可以自己发现这一点,但由于您没有这样做,我们只能猜测。注意,若您在emulator中进行测试,也有可能在其控制台中显示异常消息和堆栈跟踪
要了解如何获得该异常,请参阅您使用的构造函数:

抛出:
IllegalArgumentException
-如果
imageElements
数组为非空且长度与stringElements数组不同

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

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

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

new Image[menuItems.length]

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

  • 在正确完成日志记录后(如果您感兴趣的话),您只需在emulator中运行midlet并检查控制台消息,以确定是否需要预期的代码
从您发布的代码片段和解释来看,
intBloggerLength
值不是常量。再加上您在您提到的有问题的行中调用ChoiceGroup构造函数的方式,这看起来是获得
IllegalArgumentException
的可靠方法

  • 如果您将这一行包装到
    try catch
    中,并将适当的日志代码放入catch块中,您可以自己发现这一点,但由于您没有这样做,我们只能猜测。注意,若您在emulator中进行测试,也有可能在其控制台中显示异常消息和堆栈跟踪
要了解如何获得该异常,请参阅您使用的构造函数:

抛出:
IllegalArgumentException
-如果
imageElements
数组为非空且长度与stringElements数组不同

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

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

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

new Image[menuItems.length]

问题是我使用了一个
选项.IMPLICIT
,它不适用于ChoiceGroup,但适用于List


更改为
选项。独占的
工作正常。

问题在于我使用了一个
选项。隐式的
,它不存在于ChoiceGroup,但存在于List


更改为
选项。独占的
可以正常工作。

感谢带有Images[]参数的指针,它最初设置为null。我添加了数组,以防它与字符串[]之间的长度不同导致错误。现在它已返回null,工作正常,只需在MIDlet中使用命令选项即可。@StephenMurby在查找choice类型错误方面做得很好!顺便说一句,它也列在我提到的API文档中:“IllegalArgumentException-如果choiceType不是独占、多个或弹出式”感谢带有Images[]参数的指针,它最初设置为null。我添加了数组,以防它与字符串[]之间的长度不同导致错误。现在它已返回null,工作正常,只需在MIDlet中使用命令选项即可。@StephenMurby在查找choice类型错误方面做得很好!顺便说一句,它也列在我提到的API文档中:“IllegalArgumentException-如果choiceType不是独占、多个或弹出的类型之一”,很好地找到了bug。考虑接受你的答案,为未来读者找到解决bug的方法指明方向。考虑接受你的答案来指示将来阅读的解决方案