很抱歉看起来对下面的代码如此笨拙。综上所述,我正在制作一个问答游戏,用户可以选择问题的4种难点。 例如,如果用户选择复选框1和3,则下面的代码用于将string.xml中的字符串数组存储到String [] NUM_ALL_QuestionNames中。
//same for checkbox1,2,3, so here not duplicate //
if (checkbox4=="yes")
{
NUM_EXP_QuestionNames = getResources().getStringArray(R.array.Num_Q_Expert_List);
NUM_EXP_AnswerNames = getResources().getStringArray(R.array.Num_A_Expert_List);
QuestionImport= 0;
QuestionImport = NUM_EXP_QuestionNames.length;
int i =0;
while (i<QuestionImport)
{
String Q_toimport = NUM_EXP_QuestionNames[i];
String A_toimport = NUM_EXP_AnswerNames[i];
NUM_ALL_QuestionNames.add(Q_toimport);
NUM_ALL_AnswerNames.add(A_toimport);
++i;
}
};
NUM_ALLL_QuestionNames = new String[NUM_ALL_QuestionNames.size()]; //convert ArrayList<String> to String[]
NUM_ALLL_AnswerNames = new String[NUM_ALL_AnswerNames.size()]; //convert ArrayList<String> to String[]
最后NUM_ALL_Questionnames将从ArrayList NUM_ALLL_QuestionNames转换回String []以进行进一步处理。
string.xml中的文件应该没有问题,因为当我尝试如下设置(直接从string.xml中提取)时,应用运行良好:
NUM_ALLL_QuestionNames = getResources().getStringArray(R.array.Num_Q_Simple_List);
NUM_ALLL_AnswerNames = getResources().getStringArray(R.array.Num_A_Simple_List);
现在是String []格式的string.xml中的数据,然后将其添加到List中,此List最后转换回String []。是否有任何修改,不需要这种转换。如果string.xml可以直接用于String []
当继续执行应用程序时,logcat不会显示任何错误。但是,模拟器保持黑屏。为什么会这样?代码是否有无限循环?
非常感谢!
答案 0 :(得分:2)
这是错误的:
NUM_ALLL_QuestionNames = new String[NUM_ALL_QuestionNames.size()]; //convert ArrayList<String> to String[]
它不会将ArrayList转换为String [],它会将变量的值设置为空String []。要进行转换,请执行以下操作:
NUM_ALLL_QuestionNames = NUM_ALL_QuestionNames.toArray();
假设NUM_ALL_QuestionNames
是一个列表。
Doctor是对的,字符串比较在Java中不起作用。
答案 1 :(得分:0)
我不明白为什么checkbox4值是一个字符串,但是不要通过==来比较字符串,因为这样你可以比较可能指向不同对象的链接。 相反,请使用String中的equals方法 if(checkbox4.equals(“yes”))