2013-03-02 16 views
-1

我有一個單選按鈕活動,有5個遊戲選擇。這是一個問答遊戲,用戶可以選擇玩,直到他或她犯一個錯誤,兩個錯誤,樹,四個和五個錯誤。我的問題是......做5個活動和5個班是更好的,所以我可以在用戶檢查單選按鈕時調用每個活動的意圖,或者更好地做出一個活動,對於所有五個選擇並且取決於什麼用戶選擇,直到1,2,3,4或5錯誤計數?我知道如何做第一個選項,但我不知道如何做第二個選項。這裏我選擇的活動:如何運行具有意圖的其他活動的特定方法

public class Izbor extends Activity implements OnClickListener, OnCheckedChangeListener{ 

    MediaPlayer buttonBack; 
    RadioButton rbDeset,rbDvadeset,rbNeogranicenoTriGreske,rbNeogranicenoJednaGreska,rbNeogranicenoPetGresaka; 
    Button dNazad, dStart; 
    RadioGroup rGrupa; 
    TextView tv1; 

    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 

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

     setContentView(R.layout.izbor); 
     addListenerOnButton(); 
    } 

    private void addListenerOnButton() { 

     Typeface dugmad = Typeface.createFromAsset(getAssets(), "Bebas.ttf"); 
     Typeface pitanjeVrh = Typeface.createFromAsset(getAssets(), "Lobster.ttf"); 


     rbDeset = (RadioButton) findViewById(R.id.radio1); 
     rbDvadeset = (RadioButton) findViewById(R.id.radio2); 
     rbNeogranicenoJednaGreska = (RadioButton) findViewById(R.id.radio3); 
     rbNeogranicenoTriGreske = (RadioButton) findViewById(R.id.radio4); 
     rbNeogranicenoPetGresaka = (RadioButton) findViewById(R.id.radio5); 
     dNazad = (Button) findViewById(R.id.bNazad); 
     dStart = (Button) findViewById(R.id.bStart); 
     rGrupa = (RadioGroup) findViewById(R.id.radioGroup1); 
     buttonBack = MediaPlayer.create(Izbor.this, R.raw.back); 
     tv1 = (TextView) findViewById(R.id.tv1); 

     dNazad.setTypeface(dugmad); 
     dStart.setTypeface(dugmad); 
     rbDeset.setTypeface(dugmad); 
     rbDvadeset.setTypeface(dugmad); 
     rbNeogranicenoPetGresaka.setTypeface(dugmad); 
     rbNeogranicenoJednaGreska.setTypeface(dugmad); 
     rbNeogranicenoTriGreske.setTypeface(dugmad); 
     tv1.setTypeface(pitanjeVrh); 


     rGrupa.setOnCheckedChangeListener(this); 
     rbDeset.setOnClickListener(this); 
     rbDvadeset.setOnClickListener(this); 
     rbNeogranicenoJednaGreska.setOnClickListener(this); 
     rbNeogranicenoTriGreske.setOnClickListener(this); 
     rbNeogranicenoPetGresaka.setOnClickListener(this); 
     dStart.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       if(rbDeset.isChecked()){ 
        startActivity(new Intent("rs.androidaplikacijekvizopstekulture.KVIZ")); 
       }else if(rbDvadeset.isChecked()){ 
        startActivity(new Intent("rs.androidaplikacijekvizopstekulture.DVADESETPITANJA")); 
        }else if(rbNeogranicenoJednaGreska.isChecked()){ 
         startActivity(new Intent("rs.androidaplikacijekvizopstekulture.TRIDESETPITANJA")); 
        }else if(rbNeogranicenoPetGresaka.isChecked()){ 
         startActivity(new Intent("rs.androidaplikacijekvizopstekulture.NEOGRANICENOPETGRESAKA")); 

       } 

      } 
     }); 


     dNazad.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       buttonBack.start(); 
       finish(); 

      } 
     }); 
    } 

    public void onCheckedChanged(RadioGroup group, int checkedId) { 
     } 

    public void onClick(View v) { 
     // TODO Auto-generated method stub 

    } 
} 

這裏是一個活動,其中用戶可以玩到5個錯誤:

public class NeogranicenoPetGresaka extends Activity implements OnClickListener{ 

    Button bIzlazIzKviza, bOdgovor1, bOdgovor2, bOdgovor3, bOdgovor4; 
    TextView question, netacniOdg, score; 
    int counter = 0; 
    int brojacPogresnihOdgovora = 0; 
    int brojacTacnihOdgovora = 0; 

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


    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) { 
       brojacTacnihOdgovora++; 
       Intent i = new Intent("rs.androidaplikacijekvizopstekulture.TACANODGOVOR"); 
       startActivity(i); 
       mHandler.postDelayed(mLaunchTask,1200); 
      } 
     else{ 
      brojacPogresnihOdgovora++; 
      Intent i = new Intent("rs.androidaplikacijekvizopstekulture.POGRESANODGOVOR"); 
      startActivity(i); 
      mHandler.postDelayed(mLaunchTask,2200); 
      } 
     } 
    }; 


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

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

     setContentView(R.layout.neograniceno5gresaka); 

     Typeface dugmad = Typeface.createFromAsset(getAssets(), "Bebas.ttf"); 
     Typeface pitanje = Typeface.createFromAsset(getAssets(), "Lobster.ttf"); 
     bIzlazIzKviza = (Button) findViewById(R.id.bIzlazIzKvizaN); 
     netacniOdg = (TextView) findViewById(R.id.tvBrojPitanjaN); 
     question = (TextView) findViewById(R.id.tvPitanjeN); 
     bOdgovor1 = (Button) findViewById(R.id.bOdgovorN1); 
     bOdgovor2 = (Button) findViewById(R.id.bOdgovorN2); 
     bOdgovor3 = (Button) findViewById(R.id.bOdgovorN3); 
     bOdgovor4 = (Button) findViewById(R.id.bOdgovorN4); 
     score = (TextView) findViewById(R.id.tvSkor2N); 
     bOdgovor1.setTypeface(dugmad); 
     bOdgovor2.setTypeface(dugmad); 
     bOdgovor3.setTypeface(dugmad); 
     bOdgovor4.setTypeface(dugmad); 
     bIzlazIzKviza.setTypeface(dugmad); 
     netacniOdg.setTypeface(dugmad); 
     question.setTypeface(pitanje); 
     score.setTypeface(dugmad); 

     nextQuestion(); //startuje prvo pitanje! 

    } 

     public void onClick(View v) { 
     // TODO Auto-generated method stub 


    } 

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

    public void nextQuestion() { 

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

     try{ //Pokusava da otvori db 

      mDbHelper.open(); //baza otvorena 

      Cursor c = mDbHelper.getTestData(); 

      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); 

      if(brojacPogresnihOdgovora < 5){ 


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

     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); 
     //reset your next question and all four options here 
     netacniOdg.setText("" + brojacPogresnihOdgovora); 
     score.setText("Score: " + brojacTacnihOdgovora); 
      } 
      else{ 
       Intent i = new Intent("rs.androidaplikacijekvizopstekulture.REZULTAT"); 
       startActivity(i); 
       mHandler.postDelayed(mLaunchTaskFinish,4000); 
      } 
     } 
     finally{ // kada zavrsi sa koriscenjem baze podataka, zatvara db 
      mDbHelper.close(); 
     } 

    bIzlazIzKviza.setOnClickListener(new OnClickListener() { 

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

你想要什麼?一個工作代碼樣本來實現第二個選項? – davidcesarino 2013-03-02 22:33:55

+0

首先,我想如果第二個選項更好或不是。如果是這樣,我想要示例代碼。我不想從頭開始,因爲到目前爲止我的活動中有很多事情正在進行,所以我不想失去它。如果情況一樣,我不介意像我這樣做五項活動。 – user2083882 2013-03-02 22:48:43

回答

1

考慮到的選擇只是一個小設置爲相同的比賽我看絕對沒有爲每個選擇創建一個類/活動的原因,這將是純粹的瘋狂。

至於設置部分,只需創建一個只接受數字的輸入域,接受任何數量的「錯誤」(爲什麼不?)。 OnClick從此字段獲取輸入,將值保存到意圖附加項並以意圖啓動遊戲。在遊戲的onCreate閱讀意圖附加,並獲得「嘗試」/「錯誤」的數量。

+0

不,我需要保留我的單選按鈕,其他原因。我如何使用單選按鈕調用某個活動,但是該活動中的某種特定方法? – user2083882 2013-03-03 03:10:38

0

OK,我試圖與onNewIntent,但我只能調用一個方法,我需要至少3下面是我的選擇活動代碼單選按鈕(組):

public void onClick(View v) { 
       if(rbDeset.isChecked()){ 
        Intent intent = new Intent(Izbor.this, Kviz.class); 
        intent.putExtra("myMethod", "nextQuestion"); 
        startActivity(intent); 

這是我的測驗活動:

@Override 
    protected void onNewIntent(Intent intent) { 
     super.onNewIntent(intent); 
     if(intent.getStringExtra("methodName").equals("nextQuestion")){ 
       nextQuestion(); 
     } 

       } 

我試過ELSE如果但它沒有奏效。我的方法被命名爲:nextQuestion(),nextQuestion2()和nextQuestion3()。這些方法與僅用於不同計數器的方法幾乎相同(一個用於10個問題,一個用於20個,另一個用於30個)。也許我不需要3種方法來做到這一點,但老實說,我不知道其他方式來做到這一點。

相關問題