试图在Android平台上的两个类之间传递一个int

时间:2012-01-31 17:27:54

标签: java android

我正在尝试使用bundle在两个类之间传递一个int。我已经在网上看了它似乎应该很容易做到,它只是不适合我:(任何帮助非常感谢!我试图在一个简单的游戏中将int生活从一个页面传递到另一个页面。

这是我从

传递的第一页的代码
int life = 5;

....

if(input.equalsIgnoreCase(teststr))
                {
                    Intent i = new Intent("com.name.PAGETWO");
                    i.putExtra("com.name.PAGETWO.life", life);
                    startActivity(i);
                    mpButtonClick.stop();
}

在第二页上,尝试接收int

Intent i = new Intent("com.name.PAGETWO");
Bundle extras = i.getExtras();
int temp2 = extras.getInt("life");
int life = temp2;

当我尝试运行它时,它会尝试继续第二页,然后只是说应用程序意外停止了,但是当我注释掉代码时它继续正常运行,所以我知道我肯定会放入这里的代码错了。提前谢谢!

2 个答案:

答案 0 :(得分:4)

为什么一个全新的intent对象包含你传递的int?在receiver活动中,使用getIntent()检索活动的启动意图。这个意图将包含你的额外内容。

答案 1 :(得分:3)

你在第二页上创建了一个全新的Intent,当然没有这个包。相反,您需要使用getIntent()检索调用Intent。

以下是您的第二页代码的外观:

int life = getIntent().getExtras().getInt("life");

编辑:再次查看您的代码,确保额外的密钥名称在两端都是一致的。可以肯定的是,我通常会使用最终变量。所以在你的第二个活动中(假设它是ActivityTwo),在顶部(onCreate()之外)声明这个:

final static public String EXTRA_LIFE = "life";

然后在调用活动中:

Intent i = new Intent(this, ActivityTwo.class);
i.putExtra(ActivityTwo.EXTRA_LIFE, life);
startActivity(i);

(你可能也错误地构建了你的意图;比较我的例子)。

在第二项活动中,在onCreate()内:

int life = getIntent().getIntExtra(EXTRA_LIFE, 0);

(如果额外不存在,您可以将0替换为您想要的默认值。)

这样你就不必担心拼写错误,可以依赖Eclipse的建议来确保你的一致性。