如何使用intent将变量传递给另一个活动?

时间:2016-03-16 20:06:02

标签: android android-intent

我正在尝试构建一个简单的cookie点击器 - 按一个按钮变量增加1。 现在,我正在尝试建立一个商店,所以你可以购买升级 - 变量增长更多,自动点击...... 所以,我正在尝试使用intent传递我的变量(cookie的数量,用于点击的cookie),但每次我尝试进入活动时,我的应用程序崩溃。 这是我的MainActivity代码:

public static int NumOfCookies=0;
public static int CookieForClick=1;
public final static String EXTRA_MESSAGE = "com.example.cookieclicker01";
public final static String EXTRA_INTENT = "com.example.cookieclicker01";

public void GetToShop(View v){
    Intent intent = new Intent(this, ShopActivity.class);
    Bundle extras = new Bundle();
    intent.putExtra(EXTRA_MESSAGE, NumOfCookies);
    intent.putExtra(EXTRA_INTENT, CookieForClick);
    intent.putExtras(extras);
    startActivity(intent);
}

这是第二个活动的代码:

        Intent intent = getIntent();
     var1= intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
     var2 = intent.getStringExtra(MainActivity.EXTRA_INTENT);
    NumOfCookies= Integer.parseInt(var1);
    CookiesForClick= Integer.parseInt(var2);
    TextView t1= (TextView) findViewById(R.id.Cookies);
    t1.setText(Integer.toString(NumOfCookies));

2 个答案:

答案 0 :(得分:0)

您正在尝试获取String,但您的var1和var2是int值。

var1= intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
 var2 = intent.getStringExtra(MainActivity.EXTRA_INTENT);

正确的是:

var1= intent.getInt(MainActivity.EXTRA_MESSAGE);
var2 = intent.getInt(MainActivity.EXTRA_INTENT);

或者您将把var1的类型,var2更改为String:

public static String NumOfCookies=0;
public static String CookieForClick=1;

答案 1 :(得分:0)

这个 -

//Bundle extras = new Bundle();
intent.putExtra(EXTRA_MESSAGE, NumOfCookies);
intent.putExtra(EXTRA_INTENT, CookieForClick);
//intent.putExtras(extras);

注释掉这两行。基本上你在最后一行中将一个空的Bundle放在你的意图中,从而替换你以前存储的值。

或那 -

    Bundle extras = new Bundle();
    extras.putString(EXTRA_MESSAGE, NumOfCookies);
    extras.putString(EXTRA_INTENT, CookieForClick);
    intent.putExtras(extras);