Intent Bundle每次都返回Null?

时间:2011-11-12 17:42:48

标签: java android android-intent bundle

我发送了一些新的意图。在那里它抓取捆绑并测试它是null。每次都是null即使我能够获得传递的值并使用它们。

任何人都可以看到if语句有什么问题吗?

Intent i = getIntent();
Bundle b = i.getExtras();
int picked = b.getInt("PICK");
int correct = b.getInt("CORR");
type = b.getString("RAND");
if(b == null || !b.containsKey("WELL")) {
    Log.v("BUNDLE", "bun is null");
} else {
    Log.v("BUNDLE", "Got bun well");
}

编辑:这是创建包的地方。

Intent intent = new Intent(this, app.pack.son.class);
Bundle b = new Bundle();
b.putInt("PICK", pick);
b.putInt("CORR", corr);
b.putString("RAND", "yes");
intent.putExtras(b);
startActivity(intent);

3 个答案:

答案 0 :(得分:5)

我认为问题不在于您的论坛是null。这不可能是因为你很快就会得到NullPointerException

问题是您的错误消息有误。改变这个:

if(b == null || !b.containsKey("WELL")) {
    Log.v("BUNDLE", "bun is null");
} else {
    // ...
}

对此:

if (!b.containsKey("WELL")) {
    Log.v("BUNDLE", "bundle does not contain key WELL");
} else {
    // ...
}

捆绑包不包含此密钥的原因是因为您没有添加它。

答案 1 :(得分:0)

嗯,你在使用它之后测试b == null,这一定是错的。你也错过了最初的if

编辑后
您没有在包中放入“WELL”,因此会记录字符串“bun is null”。 b必须是非空的,否则您手上就会崩溃。尝试将if句更改为此并报告您获得的内容:

if (b == null) {
    Log.v("BUNDLE", "bun is null");
} else if (!b.containsKey("WELL")) {
    Log.v("BUNDLE", "bun doesn't contain WELL");
else {
    Log.v("BUNDLE", "Got bun well");
}

答案 2 :(得分:0)

我更改了您的if语句以匹配日志消息。请运行该程序并检查日志消息。

if(b == null) {
    Log.v("BUNDLE", "bun is null");
} else {
    if (b.containsKey("WELL")) {
        Log.v("BUNDLE", "Got bun well");
    }
}