bagaimana cara membuat pengatur waktu yang dimulai secara otomatis?

Saya sedang mengerjakan kuis Android di aplikasi saya, saya memiliki kelas QuestionActivity. Dalam metode setQuestions() mana teks dari database ditetapkan dalam tampilan teks tombol dan skor disetel ke nol untuk pertama kalinya. Dalam teks berikutnya, pertanyaan berikutnya diberikan dan skor juga diperbarui apakah pertanyaannya salah atau benar. Saya ingin memiliki pengatur waktu otomatis yang dimulai saat kita memasuki aktivitas ini. Dan pada putaran berikutnya dimulai lagi dari beberapa waktu dan terus menurun. saya tahu untuk ini saya harus membuat tampilan teks dalam pertanyaan xml yang terkait dengan panggilan ini. tapi saya tidak tahu di mana dan bagaimana menulis kode di kelas ini. waktu pengatur waktu 30 detik. saya memposting kode kelas ini. tolong seseorang bantu saya.

public class QuestionActivity extends Activity implements OnClickListener{

    private Question currentQ;
    private GamePlay currentGame;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.question);
                /**
         * Configure current game and get question
         */
        currentGame = ((CYKApplication)getApplication()).getCurrentGame();
        currentQ = currentGame.getNextQuestion();
        Button nextBtn1 = (Button) findViewById(R.id.answer1);
        nextBtn1.setOnClickListener(this);
        Button nextBtn2 = (Button) findViewById(R.id.answer2);
        nextBtn2.setOnClickListener(this);
        Button nextBtn3 = (Button) findViewById(R.id.answer3);
        nextBtn3.setOnClickListener(this);
        Button nextBtn4 = (Button) findViewById(R.id.answer4);
        nextBtn4.setOnClickListener(this);
        Button nextBtn5 = (Button) findViewById(R.id.answer5);
        nextBtn5.setOnClickListener(this);


        /**
         * Update the question and answer options..
         */
        setQuestions();

    }


    /**
     * Method to set the text for the question and answers from the current games
     * current question
     */
    private void setQuestions() {
        //set the question text from current question
        String question = Utility.capitalise(currentQ.getQuestion());
        TextView qText = (TextView) findViewById(R.id.question);
        qText.setText(question);

        //set the available options
        List<String> answers = currentQ.getQuestionOptions();
        TextView option1 = (TextView) findViewById(R.id.answer1);
        option1.setText(Utility.capitalise(answers.get(0)));

        TextView option2 = (TextView) findViewById(R.id.answer2);
        option2.setText(Utility.capitalise(answers.get(1)));

        TextView option3 = (TextView) findViewById(R.id.answer3);
        option3.setText(Utility.capitalise(answers.get(2)));

        TextView option4 = (TextView) findViewById(R.id.answer4);
        option4.setText(Utility.capitalise(answers.get(3)));

        int score = currentGame.getScore();
        String scr = String.valueOf(score);
        TextView score1 = (TextView) findViewById(R.id.score);
        score1.setText(scr);
        }


    @Override
    public void onClick(View arg0) {
        //Log.d("Questions", "Moving to next question");
        if(arg0.getId()==R.id.answer5)
        {
        new AlertDialog.Builder(this)
        .setMessage("Are you sure?")
        .setCancelable(true)
        .setPositiveButton("Yes",
         new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog,
         int id) {
                finish();
                 }
             }).setNegativeButton("No", null).show();

                }

        else
        {
            if(!checkAnswer(arg0)) return;  

        /**
         * check if end of game
         */
        if (currentGame.isGameOver()){
            //Log.d("Questions", "End of game! lets add up the scores..");
            //Log.d("Questions", "Questions Correct: " + currentGame.getRight());
            //Log.d("Questions", "Questions Wrong: " + currentGame.getWrong());
            Intent i = new Intent(this, EndgameActivity.class);
            startActivity(i);
            finish();
        }
        else{
            Intent i = new Intent(this, QuestionActivity.class);
            startActivity(i);
            finish();
          }
        }
      }



    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        switch (keyCode)
        {
        case KeyEvent.KEYCODE_BACK :
            return true;
        }

        return super.onKeyDown(keyCode, event);
    }


    /**
     * Check if a checkbox has been selected, and if it
     * has then check if its correct and update gamescore
     */
    private boolean checkAnswer(View v) {

        Button b=(Button) v;
        String answer = b.getText().toString();

            //Log.d("Questions", "Valid Checkbox selection made - check if correct");
            if (currentQ.getAnswer().equalsIgnoreCase(answer))
            {
                b.setBackgroundResource(R.drawable.answercolor);
                //Log.d("Questions", "Correct Answer!");
                currentGame.incrementScore();
            }
            else{
                b.setBackgroundResource(R.drawable.answercolorr);
                //Log.d("Questions", "Incorrect Answer!");
                currentGame.decrementScore();
            }
            return true;
        }

}

person John R    schedule 05.09.2013    source sumber


Jawaban (2)


Saya ingin memiliki pengatur waktu otomatis yang dimulai saat kita memasuki aktivitas ini. Dan pada putaran berikutnya dimulai lagi dari beberapa waktu dan terus menurun. saya tahu untuk ini saya harus membuat tampilan teks dalam pertanyaan xml yang terkait dengan panggilan ini. tapi saya tidak tahu di mana dan bagaimana menulis kode di kelas ini. waktu pengatur waktu 30 detik.

Anda dapat mencapai ini menggunakan CountDownTimer

new CountDownTimer(30000, 1000) {

     public void onTick(long millisUntilFinished) {
         mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
     }

     public void onFinish() {
         mTextField.setText("done!");
     }
  }.start();

Untuk info lebih lanjut rujuk di sini

person CRUSADER    schedule 05.09.2013
comment
aku tidak mengerti kamu. Saya pikir hanya kode ini tidak cukup untuk mengatur waktu seperti yang saya inginkan di game saya. bisakah Anda memberi saya solusi lain dengan kode? - person John R; 05.09.2013
comment
Mengapa itu tidak cukup? Timer akan berfungsi dalam suatu aktivitas... Bagian pertanyaan Anda akan diperbarui... Saya menyarankan Anda karena saya melakukan aplikasi kuis Tanya Jawab yang serupa.. - person CRUSADER; 05.09.2013
comment
Oke. Tetapi ketika saya menetapkan tampilan teks yang saya buat di pertanyaan xml sebagai pengganti mTextField.setText(). Ini menunjukkan kesalahan. - person John R; 05.09.2013
comment
saya memecahkan kesalahan. bekerja. kamu memecahkan masalahku. kawan. jika saya memerlukan bantuan lain, saya mengirimi Anda SMS karena Anda mengerjakan kuis. - person John R; 05.09.2013
comment
@JohnR Senang membantu Anda.. BTW saya bukan satu-satunya.. Anda selalu dapat memposting pertanyaan baru di situs ini, ada banyak seperti saya yang dapat memandu Anda ke arah yang benar.. :) - person CRUSADER; 05.09.2013
comment
Saya punya satu masalah. Kode yang Anda sarankan kepada saya agar pengatur waktu berfungsi dengan baik, saya ingin ketika penghitung waktu mundur selesai, pertanyaan berikutnya datang. Untuk ini saya menulis baris-baris ini dalam metode selesai pengatur waktu. /*kode*/ maksud i; i.setClassName(com.pkgname,com.pkgname.classname); startActivityForResult(i,0); kode ini juga berfungsi tetapi jika saya memasukkan kode ini, tombol keluar saya tidak berfungsi dengan baik. itu menampilkan kotak dialog dan menekan ya tidak keluar. setelah klik 3-4 kali keluarnya. - person John R; 06.09.2013
comment
@JohnR Posting pertanyaan baru di situs ini dengan menyebutkan dengan jelas apa yang Anda coba dan di mana Anda terjebak... - person CRUSADER; 06.09.2013
comment
stackoverflow.com/questions/18657036/ Tautan pertanyaan itu. - person John R; 06.09.2013
comment
kawan. hanya kamulah yang bisa menyelesaikan masalahku ini. tolong bantu aku. stackoverflow.com/questions/18800528/ - person John R; 14.09.2013

Untuk pengatur waktu ada kelas Timer. Saya menggunakannya untuk mengirim data setiap 300 ms dari ponsel saya. Tetapi Anda memerlukan penghitung, bukan pengatur waktu, untuk itu Anda menggunakan penangan untuk threading dan bilangan bulat yang dimulai dari counter=30 dan di penangan Anda menguranginya sebanyak satu penghitung-- dan penangannya adalah postat 1detik(1000ms)

person cesztoszule    schedule 05.09.2013