Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中动态高效地切换活动?_Android_Android Intent_Android Activity - Fatal编程技术网

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

如何在android中动态高效地切换活动?,android,android-intent,android-activity,Android,Android Intent,Android Activity,我正在开发一款android游戏,其中大约有50个级别,每个级别代表一个活动。例如Level1,Level2…Level50。 完成每个关卡后,我将切换到LevelUpActivity,在这里我将显示玩家的当前分数和级别以及升级消息。按一下按钮,我切换到下一个级别的游戏。现在我的问题是,当我有当前的级别编号时,如何切换到下一个活动(级别)? 例如,假设我已经清除了Level2,那么我想从LevelUpActivity跳到Level3,有什么有效的方法?目前,通过使用Switch-Case语句,我

我正在开发一款android游戏,其中大约有50个级别,每个级别代表一个
活动
。例如
Level1
Level2
Level50
。 完成每个关卡后,我将切换到
LevelUpActivity
,在这里我将显示玩家的当前分数和级别以及升级消息。按一下按钮,我切换到下一个级别的游戏。现在我的问题是,当我有当前的级别编号时,如何切换到下一个
活动
(级别)? 例如,假设我已经清除了
Level2
,那么我想从
LevelUpActivity
跳到
Level3
,有什么有效的方法?目前,通过使用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;
      }
    }
  }
}

switch语句的性能不会随着语句数量的增加而显著降低。不过switch语句将非常长

假设每个
级别
活动都遵循相同的界面(即它们接受“分数”而不接受其他内容),那么您可以将所有级别放在一个数组中

private static final Class<Activity>[] levels = [
   Level1.class,
   Level2.class,
   Level3.class,
   ...
   Level4.class
]
私有静态最终类[]级别=[
级别1.2级,
级别2.0级,
级别3.0级,
...
级别4.1级
]
然后像这样检索它们:

int levelNumber = someMethodToGetLevelNumber();
Class<Activity> levelClass = levels[levelNumber]; 
Intent i = new Intent(this, Level2.class);
i.putExtra("score", score);
startActivity(i);
int-levelNumber=somethodtogetlevelnumber();
Class-levelClass=级别[levelNumber];
意向i=新意向(本,2级等级);
i、 putExtra(“分数”,分数);
星触觉(i);