NullPointerException:尝试在空对象引用上调用虚方法'java.lang.String android.os.Bundle.getString(java.lang.String)'

时间:2016-04-22 21:26:32

标签: android android-intent

我有一项活动正在呼唤另一项活动。但它一直给我错误“java.lang.NullPointerException:尝试在空对象引用上调用虚方法'java.lang.String android.os.Bundle.getString(java.lang.String)'。

致电活动:

Intent intent1 = new Intent (this, buisnessProfileEdit.class);
Bundle data1 = new Bundle();
data1.putString("Restaurant Username",restaurantUsername);
startActivity(intent1);

被叫活动:

Intent intentReceived = getIntent();      
Bundle data = intentReceived.getExtras();
restaurantUsername = data.getString("Restaurant Username");

有人可以帮我解释为什么会这样吗?

3 个答案:

答案 0 :(得分:2)

真正的问题是你错过了通过意图传递包:

intent1.putExtras(data1);

试试这个:

Intent intent1 = new Intent (this, buisnessProfileEdit.class);
Bundle data1 = new Bundle();
data1.putString("Restaurant Username",restaurantUsername);
intent1.putExtras(data1);
startActivity(intent1);

即使您将在Called活动中为此添加验证:

Intent intentReceived = getIntent();      
Bundle data = intentReceived.getExtras();
if(data != null){
     restaurantUsername = data.getString("Restaurant Username");
}else{
     restaurantUsername = "";
}
  

尝试调用虚方法'java.lang.String   空对象上的android.os.Bundle.getString(java.lang.String)'   参考

您无法调用方法getString(),因为您的包是空的!

答案 1 :(得分:1)

另一个更简单,更简洁的选择是从意图本身添加和获取额外内容。

在通话活动中:

Intent intent = new Intent (this, CalledActivity.class);
intent.putExtra("FOO", foo);

在被叫活动中:

Bundle extras = getIntent().getExtras();
String foo = extras.getString("FOO");

答案 2 :(得分:0)

您必须将额外内容添加到实际的Intent:

Intent intent1 = new Intent (this, buisnessProfileEdit.class);
Bundle data1 = new Bundle();
data1.putString("Restaurant Username",restaurantUsername);
intent1.putExtras(data1);
startActivity(intent1);

(PS:你在buisnessProfileEdit中输错了。)