2017-11-15 4 views
1

Android用クイズアプリで働いています。私はRadioGroupでRadioButtonを使用しています。私は誰かが正しい答えをチェックするとき(この場合はid/krzyzyk)スコアが1ポイント増加することを達成したい。私はこのコードを作っ:Androidクイズアプリのラジオボタン

int score = 2; 

public void onRadioButtonClicked(View view) { 
    RadioButton radiobutton1 = (RadioButton) findViewById(R.id.krzyzyk); 

    if (radiobutton1.isChecked()) { 
     score = score + 1; 
    } 
} 

それが動作しますが、私はアプリを実行し、クリックし、別のRadioButtonにし、再びid/krzyzyk時にスコアが再び更新します。この問題を解決する手助けはできますか?

答えて

0

ユーザーがラジオボタンkrzyzykをタップすると、コードは常にスコアが増加します。

答えを提出し、選択したラジオボタンが正しい場合はスコアを増やして次の質問に進んでください。

の変更のようなものにあなたのコード:あなたは(正しい答えを選択して、リスナーでこれを確認したときに、この方法は、上の呼び出しますので、スコアが増加されます、もちろんあなたのクイズのロジックを考えている

public void onRadioButtonClicked(View view) { 
    // Is the button now checked? 
    boolean checked = ((RadioButton) view).isChecked(); 

    // Check which radio button was clicked 
    switch(view.getId()) { 
     case R.id.correct_answer: // this is id/krzyzyk 
      if (checked) 
       score++; 
       // Go to next question 
      break; 
     case R.id.wrong_answer: 
      if (checked) 
       // Go to next question. 
      break; 
    } 
} 
+0

私はこのコードを先に試しましたが、うまく動作しません。 もし私が「wrong_answer」と「correct_answer」よりも「correct_answer」を選択した場合、アプリは一度だけでなく2度スコアを上げます。 – Formax

+0

RadioButtonをクリックした後、次の質問にリダイレクトし、変数を消去してブール値をfalseにリセットし、次のユーザータップを待ちます。 –

+0

私は解決策を見つけた、 'onResume()' helped – Formax

0

RadioButtonまたはRadioGroupをsetEnabled(boolean)で無効にすることができます。例えば

、私は自分の答えを変更することからユーザーを防ぐために、その時点ですべてのラジオボタンを無効にすることをお勧めし

radiobutton1.setEnabled(false); 

によって選択されたラジオボタンを無効にすることができます。ラジオグループでsetEnabled(boolean)と呼ぶことで、これを一度に行うことができます。

RadioGroup group = (RadioGroup) findViewById(R.id.myRadioGroup); 
group.setEnabled(false); 
+0

このコマンドは、次の問題を修正するのに役立ちました。 – Formax

0

、ボタンをクリックするたびに)間違った結果になります。ボタンをクリックすると(次へ、チェック)、質問でフラグメントをスワイプするか、間違った右のインジケータのフラグのような変数を使用できます。

int m_rightAnswer =0; 
... 
public void onRadioButtonClicked(View view) { 
    RadioButton radiobutton1 = (RadioButton) findViewById(R.id.krzyzyk); 

    if (radiobutton1.isChecked() && m_rightAnswer==0){ 
     score = score + 1; m_rightAnswer=1 } 
       } 

あなたが右の答えをクリックすると、ラジオボタンをクリックして戻り値が変わることはありませんが、論理はありません。

関連する問題