android - 复选框和字符串[]

时间:2012-11-20 17:18:03

标签: android string checkbox

很抱歉看起来对下面的代码如此笨拙。综上所述,我正在制作一个问答游戏,用户可以选择问题的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);

问题:

  1. 现在是String []格式的string.xml中的数据,然后将其添加到List中,此List最后转换回String []。是否有任何修改,不需要这种转换。如果string.xml可以直接用于String []

  2. ,那就更好了
  3. 当继续执行应用程序时,logcat不会显示任何错误。但是,模拟器保持黑屏。为什么会这样?代码是否有无限循环?

  4. 非常感谢!

2 个答案:

答案 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”))