如何在android中动态有效地切换活动?

时间:2017-07-18 20:43:07

标签: android android-intent android-activity

我正在开发一款Android游戏,其中大约有50个级别,每个级别代表一个activity。例如。 Level1Level2 ... Level50。 完成每个级别后,我将切换到LevelUpActivity,其中我显示当前得分和玩家等级以及Level Up消息。点击按钮我将切换到下一级游戏。现在我的问题是,当我拥有当前级别号码时,如何切换到下一个activity(级别)? 例如。假设我已清除Level2,那么我想从Level3跳过LevelUpActivity这样做的有效方法是什么?目前,我通过使用Switch Case语句获得此任务的成功。但它是否能有效地工作50个或更多的数字来检查并相应地切换活动? 以下代码段显示了LevelUpActivity

的类定义
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;
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

switch语句的性能不会因语句数量而显着下降。但是,switch语句将会非常长。

假设每个level活动都遵循相同的界面(即他们接受"得分"而没有别的),那么您可以将所有级别放在一个数组中。 / p>

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