Ссылка на нулевой объект по намерению с Arraylist <Hashmap> - PullRequest
0 голосов
/ 20 февраля 2019

У меня проблема с передачей моего Arraylist к следующему действию.Вот мой код ошибки.

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

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

Баттон отправляет меня на второе занятие, поэтому массив должен быть заполнен.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Сначала необходимо сериализовать значение, используя либо Bundle:

Bundle bundle = new Bundle(); 
bundle.putSerializable("names", namen); 
intent.putExtras(bundle);

, либо приведя список к Serializable:

intent.putExtra("names", (Serializable) names);
0 голосов
/ 20 февраля 2019
 ArrayList<HashMap<String,String>> names = new ArrayList<>();

 HashMap<String,String> map = new HashMap<>();

 map.put("Name", "Spieler");

 map.put("Gender", "male");

 names.add(map);

Отправить данные с помощью Intent

Bundle bundle = new Bundle();

bundle.putSerializable("keyName",names);

Intent i=new Intent(v.getContext(), SecondActivity.class);

i.putExtras(bundle);

startActivity(i);

Получить данные из Intent

Intent intent = this.getIntent();

Bundle bundle = intent.getExtras();

Log.e("SecondActivity","yourArrayList--"+(ArrayList<HashMap<String,String>>)bundle.getSerializable("keyName"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...