我正在创建一个简单的游戏,在 5 秒计时器到期并检查两个条件后,条件一是升级, Intent 开始相同的 Activity ,我打算在每次玩家遇到时将我的变量级别增加一个提高游戏等级的条件。
第二个条件启动另一个 Activity ,即失败屏幕。
我不希望每个升级增量都有不同的屏幕,当我可以加载相同的 Activity 并继续通过条件时,但是随着 Activity 再次启动,级别变量重置为其初始化值,游戏永远不会离开第 1 级。是否有任何方法可以在启动 Activity 时将变量值传递给 Activity ?
这是我的 Activity 代码:
public class FirstOneActivity extends Activity {
/** Called when the activity is first created. */
MediaPlayer ourSong;
int counter;
Button add;
Thread timer;
TextView display;
TextView lvl;
int level = 1;
int time;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ourSong = MediaPlayer.create(FirstOneActivity.this, R.raw.click);
counter = 0;
add = (Button) findViewById (R.id.bAdd);
display = (TextView) findViewById (R.id.tvDisplay);
lvl = (TextView) findViewById (R.id.lvldisplay);
add.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
counter++;
//ourSong.start();
display.setText("Your total is "+ counter);
if(counter ==1)
{
set();
timer.start();
}
}
});
timer = new Thread(){
public void run(){
try{
sleep(time);
}catch(InterruptedException e){
e.printStackTrace();
}finally{
test();
}
}
};
}
public void test(){
if(counter>= 10 && level == 1 || counter>= 15 && level == 2)
{
Intent openSplash = new Intent("com.deucalion0.FIRSTONE");
startActivity(openSplash);
level++;
}
else if(counter<10 && level == 1 || counter< 15 && level == 2){
Intent openNext = new Intent("com.deucalion0.NEXT");
startActivity(openNext);
}
}
public void set(){
if(level == 1)
{ lvl.setText("Level is "+ level);
time = 5000;
}
else if (level == 2)
{lvl.setText("Level is "+level);
time = 5000;
}
}
}
如有任何建议,我们将不胜感激。
最佳答案
当然。要将一些数据放入 Intent 中,只需使用 putExtra方法,像这样:
openNext.putExtra("levelNum", 2);
然后在调用的 Activity 中,检索 extras 包并拉出你想要的那个,如下所示:
// in onCreate() method
int levelNum = getIntent().getExtras().getInt("levelNum");
关于android - 在 Android 中使用 Intent 时将变量传递给 An Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9474764/