Null 对象引用在 Intent with Arraylist<Hashmap>



我有一个问题将我的阵列列表传递给下一个活动。这是我的错误代码。

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);

相关内容

最新更新