Проблема, с которой я столкнулся, заключается в том, что у меня есть 4 действия, а именно A, B, C и D. поток сначала А, затем В, затем С и так далее. Я хочу передать данные A в B, а затем данные A+B в C, затем данные A+B+C в D и т. д. Я использовал в Activity A Intent of Hashmap
HashMap<String, String> hashMap = new HashMap<>(); //declared Globally
hashMap.put("key", value);
i.putExtra("map", hashMap); (i is the Intent Object)
startActivity(i); //Starting the Intent
И на принимающей стороне, т.е. действие B
HashMap<String, String> hashMap = (HashMap<String, String>)i.getSerializableExtra("map");
Здесь я могу успешно получить данные, но когда я пытаюсь передать эти данные следующему действию, я получаю нулевые значения, вызывающие NullPointerException
. В деятельности Б
Hashmap<String,String> hashMap2 = new HashMap<>;
hashMap2.put("key",hashMap.get("key"));
Log.i("Value:",hashMap.get("key"));
Здесь я получаю значения, успешно введенные, когда так же, как я передаю hashmap2
в активность C, я получаю NullPointerException
. Не понимая, что здесь не так.
Я хочу передавать значения, а не сохранять их, поэтому предпочитаю Intent, а не Shared Preferences.
Спасибо за вашу помощь. Я понял, почему он давал мне нулевые значения. 1) В действии B я делал неправильный способ получения значений, т.е. сначала getIntent, а затем сумму значений A+B, т.е. putExtra следует использовать только тогда, когда Я объявляю новое намерение для класса C. Поскольку я сначала делал putExtra, а затем новое намерение для C, поэтому в C я использовал для получения нулевых значений.