2017-04-11 48 views
-2

我無法獲得四個多項選擇按鈕和問題textView以顯示文本。會發生什麼是一個意圖轉移與選定的類別「誰」或「什麼」。該類別與「誰」和「如果」語句進行比較。如果它是其中的一個,那麼它應該發佈問題並貫穿十個問題。我在if語句中使用了一個switch case來幫助區分哪個按鈕被點擊並繼續前進。當我運行模擬器時,它會顯示四個選擇按鈕但沒有任何內容顯示在文本或文本視圖中。如果語句沒有顯示多項選擇,則切換case語句

public class QuestionActivity extends AppCompatActivity { 
List<QuestionsTable> whoQuesList; 
List<QuestionsTable> whatQuesList; 
int score=0; 
int qid=0; 
QuestionsTable currentWhatQ; 
QuestionsTable currentWhoQ; 
Button btnA, btnB, btnC, btnD; 
Button butSkip; 
TextView txtQuestion; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.question); 
    butSkip = (Button) findViewById(R.id.btnSkip); 
    MySQLiteHelper db = new MySQLiteHelper(this); 
    whoQuesList = db.getAllWhos(); 
    whatQuesList = db.getAllWhos(); 
    currentWhatQ = whatQuesList.get(qid); 
    currentWhoQ = whoQuesList.get(qid); 
} 
    public void onClickQuestion(View txtViewQuestion) { 
     Bundle d = getIntent().getExtras(); 
     int c = d.getInt("category"); 
     String category = Integer.toString(c); 

     if ("Who".equals(category)) { 
     txtQuestion = (TextView) findViewById(R.id.txtViewQuestion); 
     btnA = (Button) findViewById(R.id.btnOptionA); 
     btnB = (Button) findViewById(R.id.btnOptionB); 
     btnC = (Button) findViewById(R.id.btnOptionC); 
     btnD = (Button) findViewById(R.id.btnOptionD); 
     setQuestionView(); 
     switch (txtViewQuestion.getId()) { 
      case btnOptionA: 
       if (currentWhoQ.getAnswer().equals(btnA.getText())) { 
        score++; 
       } 
       if (qid < 10) { 
        currentWhoQ = whoQuesList.get(qid); 
        setQuestionView(); 

       } else { 
        Intent intent = new Intent(QuestionActivity.this, ResultActivity.class); 
        Bundle b = new Bundle(); 
        b.putInt("score", score); //Your score 
        intent.putExtras(b); //Put your score to your next Intent 
        startActivity(intent); 

       } 
       break; 

      case btnOptionB: 
       if (currentWhoQ.getAnswer().equals(btnB.getText())) { 
        score++; 
       } 
       if (qid < 10) { 
        currentWhoQ = whoQuesList.get(qid); 
        setQuestionView(); 

       } else { 
        Intent intent = new Intent(QuestionActivity.this, ResultActivity.class); 
        Bundle b = new Bundle(); 
        b.putInt("score", score); //Your score 
        intent.putExtras(b); //Put your score to your next Intent 
        startActivity(intent); 

       } 

       break; 
      case btnOptionC: 
       if (currentWhoQ.getAnswer().equals(btnC.getText())) { 
        score++; 
       } 

       if (qid < 10) { 
        currentWhoQ = whoQuesList.get(qid); 
        setQuestionView(); 
       } else { 
        Intent intent = new Intent(QuestionActivity.this, ResultActivity.class); 
        Bundle b = new Bundle(); 
        b.putInt("score", score); //Your score 
        intent.putExtras(b); //Put your score to your next Intent 
        startActivity(intent); 

       } 

       break; 
      case R.id.btnOptionD: 
       if (currentWhoQ.getAnswer().equals(btnD.getText())) { 
        score++; 
       } 
       if (qid < 10) { 
        currentWhoQ = whoQuesList.get(qid); 
        setQuestionView(); 
       } else { 
        Intent intent = new Intent(QuestionActivity.this, ResultActivity.class); 
        Bundle b = new Bundle(); 
        b.putInt("score", score); //Your score 
        intent.putExtras(b); //Put your score to your next Intent 
        startActivity(intent); 

       } 
       break; 

     } 
    } 


    if ("What".equals(category)) { 
     MySQLiteHelper db = new MySQLiteHelper(this); 
     whoQuesList = db.getAllWhos(); 
     whatQuesList = db.getAllWhos(); 
     currentWhatQ = whatQuesList.get(qid); 
     currentWhoQ = whoQuesList.get(qid); 
     txtQuestion = (TextView) findViewById(R.id.txtViewQuestion); 
     btnA = (Button) findViewById(R.id.btnOptionA); 
     btnB = (Button) findViewById(R.id.btnOptionB); 
     btnC = (Button) findViewById(R.id.btnOptionC); 
     btnD = (Button) findViewById(R.id.btnOptionD); 
     setWhatQuestionView(); 
     switch (txtViewQuestion.getId()) { 
      case btnOptionA: 
       if (currentWhatQ.getAnswer().equals(btnA.getText())) { 
        score++; 
       } 
       if (qid < 10) { 
        currentWhatQ = whatQuesList.get(qid); 
        setQuestionView(); 

       } else { 
        Intent intent = new Intent(QuestionActivity.this, ResultActivity.class); 
        Bundle b = new Bundle(); 
        b.putInt("score", score); //Your score 
        intent.putExtras(b); //Put your score to your next Intent 
        startActivity(intent); 

       } 
       break; 

      case btnOptionB: 
       if (currentWhatQ.getAnswer().equals(btnB.getText())) { 
        score++; 
       } 
       if (qid < 10) { 
        currentWhatQ = whatQuesList.get(qid); 
        setQuestionView(); 

       } else { 
        Intent intent = new Intent(QuestionActivity.this, ResultActivity.class); 
        Bundle b = new Bundle(); 
        b.putInt("score", score); //Your score 
        intent.putExtras(b); //Put your score to your next Intent 
        startActivity(intent); 

       } 

       break; 
      case btnOptionC: 
       if (currentWhatQ.getAnswer().equals(btnC.getText())) { 
        score++; 
       } 

       if (qid < 10) { 
        currentWhatQ = whatQuesList.get(qid); 
        setQuestionView(); 
       } else { 
        Intent intent = new Intent(QuestionActivity.this, ResultActivity.class); 
        Bundle b = new Bundle(); 
        b.putInt("score", score); //Your score 
        intent.putExtras(b); //Put your score to your next Intent 
        startActivity(intent); 

       } 

       break; 
      case R.id.btnOptionD: 
       if (currentWhatQ.getAnswer().equals(btnD.getText())) { 
        score++; 
       } 
       if (qid < 10) { 
        currentWhatQ = whatQuesList.get(qid); 
        setQuestionView(); 
       } else { 
        Intent intent = new Intent(QuestionActivity.this, ResultActivity.class); 
        Bundle b = new Bundle(); 
        b.putInt("score", score); //Your score 
        intent.putExtras(b); //Put your score to your next Intent 
        startActivity(intent); 

       } 
       break; 

     } 
    } 

} 

public void setQuestionView() { 
    txtQuestion.setText(currentWhoQ.getQuestion()); 
    btnA.setText(currentWhoQ.getMultipleChoiceA()); 
    btnB.setText(currentWhoQ.getMultipleChoiceB()); 
    btnC.setText(currentWhoQ.getMultipleChoiceC()); 
    btnD.setText(currentWhoQ.getMultipleChoiceD()); 
    qid++; 
} 

public void setWhatQuestionView() { 
    txtQuestion.setText(currentWhatQ.getQuestion()); 
    btnA.setText(currentWhatQ.getMultipleChoiceA()); 
    btnB.setText(currentWhatQ.getMultipleChoiceB()); 
    btnC.setText(currentWhatQ.getMultipleChoiceC()); 
    btnD.setText(currentWhatQ.getMultipleChoiceD()); 
    qid++; 
} 

回答

0
Bundle d = getIntent().getExtras(); 
    int c = d.getInt("category"); 
    String category = Integer.toString(c); 

    if ("Who".equals(category)) { 

什麼是c的值?它如何等於「誰」或「什麼」?

和其他人一樣,使用switch語句中按鈕的完整ID。的

case R.id.btnOptionA: 

代替

case btnOptionA: 
0

不能確定,你txtViewQuestion是什麼類型的數據... switch語句完全符合原始數據類型的作品...

如果您嘗試調用按鈕變量的名稱,這將不起作用,因爲程序只適用於內存地址,所以Java將無法爲您提供您的對象的名稱(如果它的按鈕)

爲了解決這個問題,你可以傳遞參數的方法(例如INT) 0第一個按鈕 1爲第二個按鈕 2第三... 然後你可以「切換」這個參數

0

什麼是btnOptionA,btnOptionB和btnOptionC? txtViewQuestion.getId()返回一個整數,如果使用標籤,你應該使用R.id.btnOptionA,R.id.btnOptionB,R.id.btnOptionC ...