Я знаю, что здесь много таких вопросов, но я считаю, что моя проблема уникальна.
У меня есть список модулей, когда пользователь выбирает модуль, открывается другое действие, показывающее «колоды» для этого модуля. Для этого требуется второе действие, чтобы узнать, какой элемент списка был выбран. Вот как я пытаюсь этого добиться.
modulesListView.setOnItemClickListener((parent, view, position, id) -> {
ModuleObject moduleObject = list.get(position);
Intent intent = new Intent(FlashCards.this, FlashCardDecks.class);
Bundle extras = new Bundle();
extras.putString("EXTRA_MODULE_ID", moduleObject.getModuleId());
extras.putString("EXTRA_MODULE_NAME", moduleObject.getModuleName());
intent.putExtras(extras);
startActivity(intent);
});
В новом действии я получаю доступ к moduleName и Id следующим образом:
Bundle extras = getIntent().getExtras();
assert extras != null;
String moduleId = extras.getString("EXTRA_MODULE_ID");
String moduleName = extras.getString("EXTRA_MODULE_NAME");
Затем я использую moduleName для setTitle и moduleId для доступа к файербазе и заполнения списка. Все хорошо. Переменные передаются так, как они должны быть.
Но во втором уроке у меня есть диалоги, которые позволяют пользователям добавлять и удалять «колоды» из базы данных firebase, используя следующую ссылку ...
decksDatabaseReference = firebaseDatabase.getReference().child(userID).child("decks").child(moduleId);
Используя эту ссылку - пользователь может добавить «колоды» к списку во втором упражнении
//create new deckObjet
DeckObject deckObject = new DeckObject();
//get unique id from firebase
String deckId = decksDatabaseReference.push().getKey();
//set unique id to deck object
deckObject.setId(deckId);
//add new deckObject to database
decksDatabaseReference.child(deckId).setValue(deckObject);
//refresh activity to show change in listview
startActivity(new Intent(FlashCardDecks.this, FlashCardDecks.class));
Это приведет к сбою приложения. Но когда я в следующий раз открою приложение, новая колода появится во втором упражнении. Так что я не знаю, почему приложение падает, будет нулевой указатель
Вот ошибка:
java.lang.RuntimeException: Невозможно запустить действие ComponentInfo {com.ec16358.examcompanion / com.ec16358.examcompanion.FlashCardDecks}: java.lang.NullPointerException: попытка вызвать виртуальный метод 'java.lang.String android.os .BaseBundle.getString (java.lang.String) 'для ссылки на пустой объект
...
at com.ec16358.examcompanion.FlashCardDecks.onCreate (FlashCardDecks.java:48)
(строка FlashCardDecks 48 = String moduleId = extras.getString("EXTRA_MODULE_ID");
)