2

このアクティビティには、質問と4つの可能な回答があり、各ユーザーが回答した後、別の質問が再ロードされます。1/10開始値が( )のtextViewを右下隅に配置しましたrezultat.setText(counter+"/10");。各質問の後で、その値を2 / 10、3 / 10などに増やしたいのですが、counter++をどこに置くかわかりません。私のコードで、そして私はどこでも試しました。これが私のコードです:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;

public class Kviz extends Activity implements View.OnClickListener{

    Runnable mLaunchTask = new Runnable() {
        public void run() {
            startActivity(getIntent());
        }
     };
     Runnable mLaunchTaskFinish = new Runnable() {
         public void run() {
            finish();
         }
      };

    Button bIzlazIzKviza, bOdgovor1, bOdgovor2, bOdgovor3, bOdgovor4;
    TextView question, proba, rezultat;
    int counter = 1;

    private class Answer {
        public Answer(String opt, boolean correct) {
            option = opt;
            isCorrect = correct;
        }

        String option;
        boolean isCorrect;
    }
    Handler mHandler = new Handler();

    final OnClickListener clickListener = new OnClickListener() {
        public void onClick(View v) {

            Answer ans = (Answer) v.getTag();
            if (ans.isCorrect) {
                mHandler.postDelayed(mLaunchTaskFinish, 1200);
                mHandler.postDelayed(mLaunchTask,1000);
                Intent i = new Intent("rs.androidaplikacijekvizopstekulture.TACANODGOVOR");
                startActivity(i);

            }else{
                mHandler.postDelayed(mLaunchTaskFinish, 2200);
                mHandler.postDelayed(mLaunchTask,2000);
                Intent i = new Intent("rs.androidaplikacijekvizopstekulture.POGRESANODGOVOR");
                startActivity(i);
                }
            }
     };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);   //full screen
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.kviz);

        Typeface dugmad = Typeface.createFromAsset(getAssets(), "Bebas.ttf");
        Typeface pitanje = Typeface.createFromAsset(getAssets(), "Lobster.ttf");
        bIzlazIzKviza = (Button) findViewById(R.id.bIzlazIzKviza);
        rezultat = (TextView) findViewById(R.id.tvBrojPitanja);
        question = (TextView) findViewById(R.id.tvPitanje);
        bOdgovor1 = (Button) findViewById(R.id.bOdgovor1);
        bOdgovor2 = (Button) findViewById(R.id.bOdgovor2);
        bOdgovor3 = (Button) findViewById(R.id.bOdgovor3);
        bOdgovor4 = (Button) findViewById(R.id.bOdgovor4);
        bOdgovor1.setTypeface(dugmad);
        bOdgovor2.setTypeface(dugmad);
        bOdgovor3.setTypeface(dugmad);
        bOdgovor4.setTypeface(dugmad);
        bIzlazIzKviza.setTypeface(dugmad);
        rezultat.setTypeface(dugmad);
        question.setTypeface(pitanje);

        TestAdapter mDbHelper = new TestAdapter(this);
        mDbHelper.createDatabase();


        try{    //Pokusava da otvori db
        mDbHelper.open();  //baza otvorena

        Cursor c = mDbHelper.getTestData();

        question.setText(c.getString(1));

        List<Answer> labels = new ArrayList<Answer>();

        labels.add(new Answer(c.getString(2), true));
        labels.add(new Answer(c.getString(3), false));
        labels.add(new Answer(c.getString(4), false));
        labels.add(new Answer(c.getString(5), false));

        Collections.shuffle(labels);

        bOdgovor1.setText(labels.get(0).option);
        bOdgovor1.setTag(labels.get(0));
        bOdgovor1.setOnClickListener(clickListener);

        bOdgovor2.setText(labels.get(1).option);
        bOdgovor2.setTag(labels.get(1));
        bOdgovor2.setOnClickListener(clickListener);

        bOdgovor3.setText(labels.get(2).option);
        bOdgovor3.setTag(labels.get(2));
        bOdgovor3.setOnClickListener(clickListener);

        bOdgovor4.setText(labels.get(3).option);
        bOdgovor4.setTag(labels.get(3));
        bOdgovor4.setOnClickListener(clickListener);

        rezultat.setText(counter+"/10");
        }

        finally{    // kada zavrsi sa koriscenjem baze podataka, zatvara db
            mDbHelper.close();
        }

        bIzlazIzKviza.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                finish();   
            }
        });
    }


    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
    }

    public void onClick(View v) {

    }
}
4

3 に答える 3

1

「各ユーザーが答えると、別の質問が再ロードされる」とはどういう意味ですか。?差分質問にさまざまなアクティビティを使用していますか?
すべての質問に同じアクティビティを使用できます。ユーザーが回答のボタンのいずれかを押すと、メソッドを呼び出すだけです。

public void nextQuestion() {
    counter++;
    question.setText("");
    bOdgovor1.setText("");
    bOdgovor2.setText("");
    bOdgovor3.setText("");
    bOdgovor4.setText("");
    //reset your next question and all four options here
    rezultat.setText(counter + "/10");
}
于 2013-03-02T09:04:32.963 に答える
0

ここからテストするのは難しいですがcounter++、行の前に追加するように見えます

Answer ans = (Answer) v.getTag();

counter質問への回答を担当していると思われるボタンがクリックされるたびに増分するように設定されているため、正常に機能するはずです。また、電話する必要があることを忘れないでください

rezultat.setText(counter+"/10");

繰り返しますが、の新しい値を反映するようにテキストを更新しますcounter

于 2013-03-02T02:45:26.537 に答える
0

私の問題を少し拡大するために。カウンタークラスで質問を数えることができました。2/10になりますが、各質問の後にアクティビティをリロードするため、textViewも1/10にリロードします。それが私の問題の主な原因だと思います。

于 2013-03-02T15:54:54.907 に答える