2012-01-14 7 views
1

私はクイズテストを作成しようとしています。質問フォームでは、ユーザーが回答をクリックすると3つのボタンが作成されます。同じレイアウトとJavaクラスを再起動するので、次の質問が表示されます。同じレイアウトを何度も繰り返すのは痛いので、この方法はあまり良くありません。では、同じレイアウトの質問を20回変えるようにコードを変更する方法は?私はwhile関数を試しましたが、whileループを続行するためにユーザーがアクションを実行するのを待つコマンドがあれば、次の質問に進むためにボタンを押すのを待たずに動作します。ここに私のコードです:どのように最初にアクションを待つループを、アンドロイドで続けることができますか?

package dv.qtest.dvyzual; 

import java.util.Random; 
import android.app.Activity; 
import android.content.Intent; 
import android.database.Cursor; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class startGame extends Activity { 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.startgame); 
     final MediaPlayer mp2 = MediaPlayer.create(this, R.raw.correct); 

     AnyDBAdapter eventsData = new AnyDBAdapter(getBaseContext()); 
     eventsData.open(); 
     myMenu.question = myMenu.question +1; 
     String qq = getRandomNumber(); 
     Cursor c = eventsData.ExampleSelect(qq); 
     this.startManagingCursor(c); 
     eventsData.close();   final String h = c.getString(5);  setQuestions(c); 

     final Button r1 = (Button)findViewById(R.id.b1); 
     r1.setOnClickListener (new View.OnClickListener() {    public void onClick(View v) { 
       if ("1".equals(h)) { 
        r1.setBackgroundResource(R.drawable.buttonneocorrect); 
        myMenu.score = myMenu.score + 1; 
        mp2.start(); 
       } 
       else { 
        r1.setBackgroundResource(R.drawable.buttonneowrong); 
       } 
       finish(); 
       if (myMenu.question == 20) { 
      startActivity(new Intent("dv.qtest.dvyzual.QuizTestActivity.ENDQUIZGAME"));} 
       else { 
       startActivity(new Intent("dv.qtest.dvyzual.QuizTestActivity.STARTQUIZGAME")); 
       } 
          }  });   final Button r2 = (Button)findViewById(R.id.b2); 
     r2.setOnClickListener (new View.OnClickListener() {    public void onClick(View v) { 
       if ("2".equals(h)) { 
        r2.setBackgroundResource(R.drawable.buttonneocorrect); 
        myMenu.score = myMenu.score + 1; 
       } 
       else { 
        r2.setBackgroundResource(R.drawable.buttonneowrong); 
       } 
       finish(); 
       if (myMenu.question == 20) {startActivity(new Intent("dv.qtest.dvyzual.QuizTestActivity.ENDQUIZGAME"));} 
       else {startActivity(new Intent("dv.qtest.dvyzual.QuizTestActivity.STARTQUIZGAME"));}   }  }); 
       final Button r3 = (Button)findViewById(R.id.b3); 
     r3.setOnClickListener (new View.OnClickListener() {    public void onClick(View v) { 
       if ("3".equals(h)) { 
        r3.setBackgroundResource(R.drawable.buttonneocorrect); 
        myMenu.score = myMenu.score + 1; 
        mp2.start(); 
       } 
       else { 
        r3.setBackgroundResource(R.drawable.buttonneowrong); 
       } 
       finish(); 
       if (myMenu.question == 20) {startActivity(new Intent("dv.qtest.dvyzual.QuizTestActivity.ENDQUIZGAME"));} 
       else {startActivity(new Intent("dv.qtest.dvyzual.QuizTestActivity.STARTQUIZGAME"));}   }  }); 
     } 

    private String getRandomNumber(){ 

     Random generator = new Random(); 
     int n = 49; 
     n = generator.nextInt(n) +1; 
     String n1 = ""+n; 
     return n1; 
    } 

    private void setQuestions(Cursor c) { 
       TextView rscore = (TextView)findViewById(R.id.q1);  rscore.setText("Score: " + myMenu.score + "    Question: " 
+ myMenu.question); 

     TextView r0 = (TextView)findViewById(R.id.textView1);  r0.setText(c.getString(1)); 
       Button r1 = (Button)findViewById(R.id.b1);  r1.setText(c.getString(2)); 
       Button r2 = (Button)findViewById(R.id.b2);  r2.setText(c.getString(3)); 
       Button r3 = (Button)findViewById(R.id.b3);  r3.setText(c.getString(4)); 
      }  } 
+0

あなたは精通していますオブジェクト指向プログラミングと手順プログラミングとの違いは? – Joe

+0

まあ、正直言って、私はこの言語に新しいので、私はあまりよく知られていないと私はコーディング中にいくつかの大きな間違いをするかもしれない。私は修正しなければならない多くの間違いを見ていますか? – NeoXRated

+0

申し訳ありませんが、私はあなたのコードを見て時間がかかりませんでしたが、私はあなたの質問のJava(私の最初のオブジェクト指向プログラミング言語でした)でコーディングを開始する前に思った方法を認識しています。あなたのコードは大丈夫かもしれませんが、OOPの問題をコーディングして解決する方法を理解することが重要です。あなたはアンドロイドの中でどのような方法でコードをフリーズすることはありません(実際にはOSはあなたのアプリを殺すでしょう)。 – Joe

答えて

1

私はあなたの答えを返信しません...あなたはAndroid開発を開始するために間違った方法です。あなたはOOPのいくつかの概念を習得する必要があります

...順番に読む:

http://www.osnews.com/story/6788

http://docs.oracle.com/javase/tutorial/java/concepts/

そしてまた、この良いコードを実装しました:

http://source.android.com/source/code-style.html

次に...アンドロイドサンプルを見て、非常に良いサンプルがありますちょっとである:

%はAndroidSDKの%/サンプル/

また、あなたはアンドロイドアーキテクチャとAndroidのランニングを理解する必要があります:

Android system architecture

enter image description here

+1

Androidはイベントドリブンアーキテクチャ。 OOP(およびJavaの場合でも)はEvent Drivenモデルを必ずしも必要としないため、Event Drivenプログラミングとその概念を学ぶことも有益です。 –

+0

@Fuzzi:良い点! NeoX:明確にするために、それは邪悪ではありません。しかし、あなたがこのように続けば、あなたはあなたの時間を失います。アンドロイドビューのチュートリアルに従ってください: http://developer.android.com/resources/tutorials/views/index.html – Bourbon

関連する問題