2017-02-03 11 views
-3

10個の質問のあるクイズアプリ、4個のラジオボタン、最後に1個のボタンを使ってスコアを表示しています。問題は、私が5点を与える正解を選んだときですが、別のラジオボタンをチェックすると5点が残り、もう一度押すと5点が加算されます。これをコード化する最良の方法は何ですか?ここでラジオボタン付きAndroidでクイズアプリを作る

はコードです:

package com.example.android.quizproject; 

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.RadioButton; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity { 

int points = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

public void firstRadioButtons (View view){ 
    boolean checked = ((RadioButton) view).isChecked(); 
    switch (view.getId()) { 
     case R.id.questionOneA: 
      if (checked) 
       points += 0; 
       break; 
     case R.id.questionOneB: 
      if (checked) 
       points += 0; 
       break; 
     case R.id.questionOneC: 
      if (checked) 
       points += 5; 
       break; 
     case R.id.questionOneD: 
      if (checked) 
       points += 0; 
       break; 
    } 

} 

public void showScore (View view) { 
    TextView scoreTextView = (TextView) findViewById(R.id.score); 
    scoreTextView.setText(" " + points); 
} 

}

+0

質問を表現する方法はちょっと混乱します。あなたが表示するコードは、正しいオプション(C)がクリックされた場合は5ポイントを追加し、別のオプションがクリックされた場合は何もしません。これは意図された動作ではありませんか?または、これを実装する最良の方法を求めているだけですか? – RedBassett

+0

申し訳ありませんが、私の英語は最悪です! 問題は、正しい点を選択すると5点が加算されます。A、BまたはDに切り替えると0が加算されますが、Cを選択した場合は5点が減算されません。合計10ポイント。 –

+0

英語の心配はありません。あなたはこれを遠くにするためにうまくやっている!どのように質問がレイアウトされていますか? 1つのページに10の質問がすべてあるのですか?質問の間に進むための「次の」ボタンがありますか?ボタンがある場合は、そのポイントが選択されるまでポイントを加算/減算しないでください。それらが1ページにある場合、オプションがチェックされているときではなく、最後にスコアボタンが押されたときにすべての質問をチェックします。 – RedBassett

答えて

0

あなたが質問がpreviousy回答されたかどうチェックするカウンタvvariableを利用することができます。あなたのコードの一部をこれに修正してください

public void firstRadioButtons (View view){ 
    boolean checked = ((RadioButton) view).isChecked(); 
    int count=0; 
    switch (view.getId()) { 
     case R.id.questionOneA: 
      if (checked) 
       { 
      if(count!=0){ 
       points-=5; 
       count=0; 
       } 
       } 
       break; 
     case R.id.questionOneB: 
      if (checked) 
       { 
      if(count!=0){ 
       points-=5; 
       count=0; 
       } 
       } 
       break; 
     case R.id.questionOneC: 
      if (checked){ 
       points += 5; 
       count+=1;} 
       break; 
     case R.id.questionOneD: 
      if (checked) 
       { 
      if(count!=0){ 
       points-=5; 
       count=0; 
       } 
       } 
       break; 
    } 

} 
+0

それは、ブール値を追加/減算するのが簡単ですし、メソッドの最後にすべてのものを指します。 –

+0

実際には良いアイデアです。ご提案いただきありがとうございます。 –

+0

あなたは大歓迎です:) –

0

実際に、あなたがそれを記述した方法は、常識です。一度正しい答えをクリックすると5に設定されますが、それ以外の場合は0が加算されます。

一般的に、答えが一度正しいので、他の質問は0に設定されているので、5が出力されます。ここでは何も修正することは実際にありません。 5. Abhriyaが言ったように、(彼女/彼の)例のようにカウンターインクリメント値を追加することができます。

関連する問題