【问题标题】:Changing the value of String in Switch statement in Java在 Java 中的 Switch 语句中更改 String 的值
【发布时间】:2017-11-17 22:20:04
【问题描述】:

我正在尝试在 Androidswitch 语句 中更改 String 数据类型的值。并且该字符串是在声明 switch 语句的相同方法中声明的,当用户单击单选按钮时,我需要更改字符串的值

public void CreateQuestion(View view) {

    String questionType = new String();
    RadioGroup questionTypeRadioGroup = (RadioGroup) findViewById(R.id.questionTypeRadioGroup);
    questionTypeRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
            switch (checkedId) {
                case R.id.true_false:
                    questionType = "True/False";
                    break;

                case R.id.mcqs:
                    questionType = "MCQs";
                    break;
            }
        }
    });
}

【问题讨论】:

  • 正如您在单击单选按钮时编写的那样,为什么需要 checkChanged Listener.CheckChaneg 仅在您更改类型时才有效。您可以在每个单选按钮上设置 Click listener。它会完成你的工作。
  • 错误是什么?他不认识字符串?如果是,那不是因为切换,那是因为您在一个匿名类中,无法访问您实例化的字符串
  • 为什么要调用 new String();?这不是一个好习惯,也不需要
  • 真正的问题是switch语句根本没有执行,我在两个switch case中都发了一个Toast消息但是Toast都没有出现??????

标签: java android radio-button switch-statement android-radiogroup


【解决方案1】:

你应该全局声明你的字符串

public class ExampleActivity extends AppCompatActivity {
    public String questionType;

    ....

    public void CreateQuestion(View view) {
         questionType = "";
         questionTypeRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
         @Override
         public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
              switch (checkedId) {
                     case R.id.true_false:
                          questionType = "True/False";
                          break;

                      case R.id.mcqs:
                          questionType = "MCQs";
                          break;
                    }
                }
            });
        }

    ....

}

【讨论】:

  • 真正的问题是switch语句根本没有执行,我在两个switch case中都发了一个Toast消息但是Toast都没有出现??????
  • 你确定这个ID是正确的吗? R.id.true_false & R.id.mcqs,请显示你的xml
猜你喜欢
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多