在Android中使用意图时将变量传递给活动

在Android中使用意图时将变量传递给活动,android,android-intent,Android,Android Intent,我正在创建一个简单的游戏,在一个5秒计时器过期并检查了两个条件后,条件一是升级,意图开始相同的活动,我打算在玩家每次满足提高游戏级别的条件时将我的可变级别增加一级 第二个条件启动另一个活动,即失败屏幕 我不希望每次升级都有不同的屏幕,当我可以加载相同的活动并继续浏览条件时,但是当活动再次启动时,级别变量重置为其初始值,游戏永远不会离开级别1。启动活动时,是否有方法将变量值传递给活动 以下是我的活动代码: public class FirstOneActivity extends Activity

我正在创建一个简单的游戏,在一个5秒计时器过期并检查了两个条件后,条件一是升级,意图开始相同的活动,我打算在玩家每次满足提高游戏级别的条件时将我的可变级别增加一级

第二个条件启动另一个活动,即失败屏幕

我不希望每次升级都有不同的屏幕,当我可以加载相同的活动并继续浏览条件时,但是当活动再次启动时,级别变量重置为其初始值,游戏永远不会离开级别1。启动活动时,是否有方法将变量值传递给活动

以下是我的活动代码:

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



}


}
公共类FirstOneActivity扩展活动{
/**在首次创建活动时调用*/
媒体播放器;
整数计数器;
按钮添加;
线程定时器;
文本视图显示;
TextView lvl;
智力水平=1;
整数时间;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ourSong=MediaPlayer.create(FirstOneActivity.this,R.raw.click);
计数器=0;
add=(按钮)findViewById(R.id.bAdd);
display=(TextView)findViewById(R.id.tvDisplay);
lvl=(TextView)findViewById(R.id.lvldisplay);
add.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
//TODO自动生成的方法存根
计数器++;
//我们的歌曲。开始();
display.setText(“您的总数是”+计数器);
如果(计数器==1)
{ 
set();
timer.start();
}
}
});
计时器=新线程(){
公开募捐{
试一试{
睡眠(时间);
}捕捉(中断异常e){
e、 printStackTrace();
}最后{
test();
}
}
};
}
公开无效测试(){
如果(计数器>=10&&level==1 | |计数器>=15&&level==2)
{    
Intent openSplash=newintent(“com.deucalion0.FIRSTONE”);
startActivity(openSplash);
级别++;
}

否则,如果(计数器当您创建意图时,这将是如何添加数据:

Intent openNext = new Intent("com.deucalion0.NEXT");
openNext.putExtra("Level", yourLevelVariable);
startActivity(openNext);
然后在NextActivity中的onCreate()中,您将通过以下方式获得变量:

String level = getIntent().getStringExtra("Level");
编辑:如果需要整数或


编辑您可以在共享首选项中存储级别,默认值为1,并根据需要递增。

创建意图时,这将是如何添加数据:

Intent openNext = new Intent("com.deucalion0.NEXT");
openNext.putExtra("Level", yourLevelVariable);
startActivity(openNext);
然后在NextActivity中的onCreate()中,您将通过以下方式获得变量:

String level = getIntent().getStringExtra("Level");
编辑:如果需要整数或


编辑您可以将级别存储在共享首选项中,默认值为1,并根据需要递增。

当然。要将一些数据放入意图中,只需使用如下方法:

openNext.putExtra("levelNum", 2);
然后在被调用的活动中,检索附加包并取出所需的附加包,如下所示:

// in onCreate() method
int levelNum = getIntent().getExtras().getInt("levelNum");

当然可以。要在意图中添加一些数据,只需使用如下方法:

openNext.putExtra("levelNum", 2);
然后在被调用的活动中,检索附加包并取出所需的附加包,如下所示:

// in onCreate() method
int levelNum = getIntent().getExtras().getInt("levelNum");

谢谢你的建议,我试过了,但没能让它做我想做的,因为我只想做level++;,其中level值会自动递增,我不知道这是否是因为调用的活动与调用的活动是同一个活动。哦-如果你的代码调用的是openNext.putExtra(“levelNum”,level++);这不起作用:在putExtra调用后,++会增加级别。这就是++的工作方式。如果你是这样做的话,你应该使用++级别。因此,在将级别添加到extrasThanks之前,级别会增加。谢谢你的建议,我尝试了它,但无法让它做我想做的事情,因为我只想做++;级别lue将自动激活,我不知道这是否是因为调用的活动与调用的活动相同。哦-如果您的代码正在调用openNext.putExtra(“levelNum”,level++);这不起作用:在putExtra调用后,级别将由++递增。这就是++的工作方式。如果是这样做的话,您应该使用++级别。因此,在将该级别添加到extrasThanks以供输入之前,该级别将递增。我尝试在每次调用intent时递增一个整数值,但无法获取Example要工作,必须将变量初始化为1(如果有意义)?谢谢!感谢您的输入,每次调用intent时我都会尝试增加一个整数值,但无法使示例工作,必须将变量初始化为1(如果有意义)?谢谢!