0

我在嘗試更改開關語句中的字符串數據類型的值Android。和那個String聲明裏面的switch語句在同一個方法聲明中,並且我需要改變String的值,當用戶點擊Radio Button時。在Java中更改Switch語句中String的值

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; 
      } 
     } 
    }); 
} 
+0

當你寫時的onClick你的單選按鈕,那麼爲什麼你需要checkChanged Listener.CheckChaneg只有當你改變類型的作品。您可以在每個單選按鈕上設置單擊偵聽器。它會做你的工作。 –

+0

什麼是錯誤?他不認得字符串?如果是的話,那不是因爲開關,那是因爲你在一個匿名類中,它無法訪問你實例化的字符串 – Nathan

+0

爲什麼你要調用新的String();?這不是一個好的做法,也不需要 – user7294900

回答

0

ü應該聲明你的字符串全球

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; 
        } 
       } 
      }); 
     } 

    .... 

} 
+0

真正的問題是switch語句根本沒有執行,我在兩個開關的情況下都做了一個Toast消息,但都沒有Toast出現?????? – geekFromPeshawar

+0

你確定這個ID是正確的嗎? R.id.true_false&R.id.mcqs,顯示你的xml請求 –