我有一个问题将我的阵列列表传递给下一个活动。这是我的错误代码。
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
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");
如所说,阵列列表通过
正确填充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);
}
});
按钮将我发送到第二个活动,因此必须填充数组。
ArrayList<HashMap<String,String>> names = new ArrayList<>();
HashMap<String,String> map = new HashMap<>();
map.put("Name", "Spieler");
map.put("Gender", "male");
names.add(map);
以意图发送数据
Bundle bundle = new Bundle();
bundle.putSerializable("keyName",names);
Intent i=new Intent(v.getContext(), SecondActivity.class);
i.putExtras(bundle);
startActivity(i);
从意图获取数据
Intent intent = this.getIntent();
Bundle bundle = intent.getExtras();
Log.e("SecondActivity","yourArrayList--"+(ArrayList<HashMap<String,String>>)bundle.getSerializable("keyName"));
您需要首先序列化值,然后使用捆绑包:
Bundle bundle = new Bundle();
bundle.putSerializable("names", namen);
intent.putExtras(bundle);
或用序列化施放列表:
intent.putExtra("names", (Serializable) names);