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