【发布时间】:2019-02-20 04:27:42
【问题描述】:
我在将 Arraylist 传递给下一个 Activity 时遇到问题。 这是我的错误代码。
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.Serializable android.content.Intent.getSerializableExtra(java.lang.String)' on a null object reference
据我了解,我正在尝试获取一个不存在的 Arraylist。 我确保 Arraylist 已填充并且我的 Intend 值正确,但我仍然收到错误。
创建数组列表
ArrayList<HashMap<String, String>> names = new ArrayList<HashMap<String, String>>();
创建意图
Intent intent = new Intent(First.this, Second.class);
intent.putExtra("names", names);
startActivity(intent);
获取意图
Intent intent = getIntent();
ArrayList<HashMap<String, String>> usernamen = (ArrayList<HashMap<String, String>>) intent.getSerializableExtra("names");
如前所述,Arraylist 已通过正确填充
name = new HashMap<String, String>();
name.put("Name", spielername.getText().toString());
name.put("Gender", gender.getText().toString());
names.add(name);
如果有人需要更多信息,我很乐意提供。
编辑:
gobutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(names.size() < 2){
Toast.makeText(Spieler.this, "No Informations", Toast.LENGTH_SHORT).show();
return;
}
Intent intent = new Intent(Spieler.this, Games.class);
intent.putExtra("level", level.getProgress());
intent.putExtra("names", names);
startActivity(intent);
}
});
Button 将我发送到第二个 Activity,因此必须填充数组。
【问题讨论】:
-
你在
Intent intent = getIntent();这里重新声明你的intent,你不应该使用你之前声明的意图吗?或者确保您的getIntent()方法返回intent,也许它返回null。使用调试器检查getIntent()的返回值是否不为空。 -
也许另一个
Activity中的intent是空的?因此getSerializableExtra("names")这个方法是在null引用上调用的? -
你能展示你在其他活动中使用的代码吗?
-
好了,第一个Activity基本就到了。我有两个 Edittext 和一个按钮中的 Intent。数组正确填充,我通过一个简单的 Toast 进行了检查。
-
Intent intent = getIntent();在 Game Activity 中与 null 不同?
标签: java android android-intent arraylist