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

时间:2012-02-28 00:48:46

标签: android android-intent

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

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

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



}


}

感谢任何建议。

2 个答案:

答案 0 :(得分:6)

不确定。要在intent中添加一些数据,只需使用putExtra方法,如下所示:

openNext.putExtra("levelNum", 2);

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

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

答案 1 :(得分:2)

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

Intent openNext = new Intent("com.deucalion0.NEXT");
openNext.putExtra("Level", yourLevelVariable);
startActivity(openNext);

然后在NextActivity中使用onCreate(),您将获得变量:

String level = getIntent().getStringExtra("Level");

编辑:除了getStringExtra之外还有其他方法,如果你想要一个整数或...

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