2017-07-18 54 views
0

我正在開發一個安卓遊戲,其中有近50個級別,每個級別代表一個單一的activity。例如。 Level1Level2 ... Level50。 完成每個級別後,我切換到LevelUpActivity,在那裏我顯示玩家的當前分數和級別以及Level Up消息。點擊按鈕時,我將切換到遊戲的下一個級別。現在我的問題是,當我擁有當前的關卡號碼時,如何切換到下一個activity(關卡)? 例如假設我已經清除Level2然後我想從LevelUpActivity跳到Level3那麼有效的方法是什麼?目前,我通過使用Switch Case語句獲得了此任務的成功。但是,它是否能夠有效地工作50或更多的數字來檢查並相應地切換活動? 下面的代碼片段顯示了LevelUpActivity如何在android中動態和高效地切換活動?

public class LevelUpActivity extends Activity implements View.OnClickListener { 
Button btn_continue; 
TextView scoreview, levelview; 
int score, level; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.level_up); 

    Intent intent = getIntent(); 
    Bundle bundle = intent.getExtras(); 
    score = bundle.getInt("score"); 
    level = bundle.getInt("levelno"); 
    System.out.println("Current Score = " + score); 

    levelview = (TextView) findViewById(R.id.levelView); 
    levelview.setText("Level " + level + " Completed"); 
    scoreview = (TextView) findViewById(R.id.score); 
    scoreview.setText(score + ""); 

    btn_continue = (Button) findViewById(R.id.levelbtn); 
    btn_continue.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    if (v.getId() == R.id.levelbtn) { 
     Intent i; 
     switch (level) { 
      case 1: 
       i = new Intent(this, Level2.class); 
       i.putExtra("score", score); 
       startActivity(i); 
       break; 

      case 2: 
       i = new Intent(this, Level3.class); 
       i.putExtra("score", score); 
       startActivity(i); 
       break; 

      case 3: 
       i = new Intent(this, Level3.class); 
       i.putExtra("score", score); 
       startActivity(i); 
       break; 
     } 
    } 
    } 
} 

回答

0

switch語句的性能類定義不會語句的數量顯著下降。 switch語句將會非常長。

假設每個level Activity都遵循相同的接口(即它們接受「分數」而沒有別的),那麼您可以將所有級別放入數組中。

private static final Class<Activity>[] levels = [ 
    Level1.class, 
    Level2.class, 
    Level3.class, 
    ... 
    Level4.class 
] 

然後就檢索它們像這樣:

int levelNumber = someMethodToGetLevelNumber(); 
Class<Activity> levelClass = levels[levelNumber]; 
Intent i = new Intent(this, Level2.class); 
i.putExtra("score", score); 
startActivity(i);