我知道有类似以下问题:
android-intent-bundle-always-null 和 intent-bundle-returns-null-every-time,但都没有正确的答案。
在我的
在MapViewActivity(活动2)中:
问题在于`extras`捆绑包始终为null。我已经进行了调试,Intent(`intent = getIntent()`)除了一个指示这是什么类(MapViewActivity)的字段外,所有字段都设置为null。
我还尝试通过具有相同效果的`intent.putExtras(b)`来放置捆绑包。 `intent.putExtra("asdf", true)`仅用于调试目的-我也无法获取此数据(因为getIntent()几乎将所有字段设置为null)。
编辑
下面的答案是正确且可行的。这是我的错误。我没有正确地传递我的捆绑包到新意图。
在我的
活动 1
中:public void goToMapView(Info info) {
Intent intent = new Intent(getApplicationContext(), MapViewActivity.class);
//intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.putExtra("asdf", true);
info.write(intent);
startActivity(intent);
}
在信息技术中:
public void write(Intent intent) {
Bundle b = new Bundle();
b.putInt(AppConstants.ID_KEY, id);
... //many other attributes
intent.putExtra(AppConstants.BUNDLE_NAME, b);
}
public static Info read(Bundle bundle) {
Info info = new Info();
info.setId(bundle.getInt(AppConstants.ID_KEY));
... //many other attributes
return info;
}
在MapViewActivity(活动2)中:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map_view);
Bundle extras = getIntent().getBundleExtra(AppConstants.BUNDLE_NAME);
info = Info.read(extras);
...
}
问题在于`extras`捆绑包始终为null。我已经进行了调试,Intent(`intent = getIntent()`)除了一个指示这是什么类(MapViewActivity)的字段外,所有字段都设置为null。
我还尝试通过具有相同效果的`intent.putExtras(b)`来放置捆绑包。 `intent.putExtra("asdf", true)`仅用于调试目的-我也无法获取此数据(因为getIntent()几乎将所有字段设置为null)。
编辑
下面的答案是正确且可行的。这是我的错误。我没有正确地传递我的捆绑包到新意图。
getBoolean
而不是getBooleanExtra
?没有这样的方法。我刚刚检查了你的示例 - 我得到了“asdf为空”。但还是谢谢。 - XeonBundle bundle = getIntent().getExtras();
由于短路,两个 if 语句可以合并为if (bundle != null && bundle.containsKey("asdf")) {
。 - Scott Jodoin