2015-09-13 102 views
0

我正在製作一個允許用戶選擇不同類型的遊戲,在MainActivity中將有一個警報對話框供用戶選擇。 有2個元素(speed_1和speed_2)是影響GameActivity中難度的數字將數據更改爲其他活動

我想讓用戶在Alert對話框中選中「Easy」,speed_1和speed_2將變爲1(在GameActivity)

如果在警告對話框中,用戶檢入 「困難」,speed_1和speed_2將更改爲3(在GameActivity)

謝謝!

void generateLevelListDialog() { 
    // Instantiate an AlertDialog.Builder with its constructor 
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 

    // Specify the list in the dialog using the array 
    builder.setTitle("Difficulty").setItems(R.array.levels_array, 
      new DialogInterface.OnClickListener() { 
       // Chain together various setter methods to set the list 
       // items 
       // The index of the item selected is passed by the parameter 
       // which 
       public void onClick(DialogInterface dialog, int which) { 
        //switch to game activity 
        Intent gameIntent = new Intent(MainActivity.this, GameActivity.class); 
        //change ball speed and racket length 
        switch (which) { 
         case 0: 

          break; 

         case 1: 
          break; 

         case 2: 
          break; 

         default: 
          break; 
        } 
        //start activity 
        startActivity(gameIntent); 

       } 
      }); 
    //create and show list dialog 
    AlertDialog dialog = builder.create(); 
    dialog.show(); 
} 

回答

0

一般來說,你這裏有兩種選擇:

1)選擇的值保存到喜好,並在GameActivity日後讀取:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 

寫在MainActivity

preferences.edit().putInt("speed_1", speed_1).apply(); 

GameActivity中閱讀

int speed_1 = preferences.getInt("speed_1", 0); 

作爲用戶下次玩遊戲時的獎勵,它將使用先前選擇的難度級別。

2)通難度值(speed_1..speed_3)到GameActivity通過gameIntent使用演員:

寫在MainActivity

Intent gameIntent = new Intent(MainActivity.this, GameActivity.class); 
gameIntent.putExtra("speed_1", speed_1); 

GameActivity

Bundle extras = getIntent().getExtras(); 
String speed_1 = extras.getInt("speed_1"); 
+0

謝謝您的回覆,當運行應用程序時沒有錯誤,但在該應用程序中,當我小雞「輕鬆」時,遊戲發生衝突,您有任何建議嗎? – aaaabbbb

+0

檢查你的IDE中的logcat /輸出窗口,它應該顯示一個異常堆棧跟蹤,它會給你一個線索。 – Mikhail

0

你可以閱讀像下面那樣用Intent傳遞值

int level; 

Intent intent = new Intent(MainActivity.this, GameActivity.class); 
      switch (which) { 
        case 0: 
         level = 1; 
         break; 
        case 1: 
         level = 2; 
         break; 
        case 2: 
         level = 3; 
         break; 
        default: 
         level = 1;  // Default Value 
         break; 
       } 

intent.putExtra("DIFFICULTY_LEVEL", level); 
startActivity(intent); 

而且在GameActivity.java,你可以簡單地獲得價值像下面

int level = getIntent().getIntExtra()("DIFFICULTY_LEVEL", 1); // where '1' is default value 

謝謝!

+0

非常感謝您的回覆,我正在嘗試將其應用於我的代碼,但om遊戲活動「()(」DIFFICULTY_LEVEL「,1);」紅色下劃線,它說「例外令牌」,我該怎麼辦?謝謝 – aaaabbbb

+0

這個問題解決了,但是運行應用程序時沒有錯誤,但是在那個應用程序中,當我小雞「輕鬆」的時候,遊戲衝突了,你有什麼建議嗎? – aaaabbbb

+0

您將從您面臨的Logcat發佈異常/錯誤將會很有幫助。 – Omar