在Android中使用Intent时将变量传递给An活动

deu*_*on0 1 android android-intent

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

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

我不希望每个级别增加一个不同的屏幕,当我可以加载相同的活动并继续通过条件,但随着Activity再次启动,级别变量重置为其初始值,游戏永远不会离开级别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;
    }



}


}
Run Code Online (Sandbox Code Playgroud)

任何建议表示赞赏.

Ale*_*cas 6

当然.要在intent中放入一些数据,只需使用putExtra方法,如下所示:

openNext.putExtra("levelNum", 2);
Run Code Online (Sandbox Code Playgroud)

然后在被调用的Activity中,检索附加组件并拉出你想要的那个,如下所示:

// in onCreate() method
int levelNum = getIntent().getExtras().getInt("levelNum");
Run Code Online (Sandbox Code Playgroud)

  • 哦 - 如果您的代码正在调用openNext.putExtra("levelNum",level ++); 这将无效:在调用putExtra调用之后,level将增加++.这就是++的工作原理. (2认同)