Я пытаюсь отобразить контакты для сохранения в группе пользователей в базе данных FirebaseDatabase.
Приложение работает нормально в первый раз, но когда я повторяю путь, после нажатия кнопки приложение не повторяет первый результат.
Вот пример:
MainActivity вызывает GroupActivity;
GroupActivity вызывает NewUserActivity и
NewUserActivity возвращается к MainActivity после нажатия кнопки.
Внутри NewUserActivity есть коды, связанные с FirebaseDatabase, в которых контакты загружаются и добавляются по разным путям.
Вот Logcat и краткое объяснение:
Первый раунд.
Приложение запускается нормально
На первом экране показаны названия групп
debinf mainpage: onStart
debinf mainpage: onResume
debinf mainpage: onPause
debinf mainpage: onResume
Вот первый щелчок по элементу в RecyclerView.
Здесь показаны пользователи в группе.
Внизу экрана есть поплавковая кнопка Action
debinf mainpage: onPause
debinf groupactivity: onStart
debinf groupactivity: onResume
debinf mainpage: onStop
Здесь я щелкнул floatActionButton, чтобы перейти к NewUserActivity.
Здесь я копирую пользователей уже в группе
к временному пути в базе данных FirebaseDatabase
а также загрузить мой список контактов в моем устройстве
в RecyclerView.
debinf groupactivity: onPause
debinf newuser: onCreate
debinf groupact: passed intentextrasA
debinf groupact: passed intentextrasB
debinf newuser: onStart
debinf newuser: onResume
debinf newuser: Load peopleA to ContactAdded
debinf newuser: Load peopleB to ContactAdded
debinf newuser: Load peopleC to ContactAdded
debinf groupactivity: onStop
debinf groupactivity: onDestroy
Здесь показаны загруженные контакты в верхней части RecyclerView.
и список контактов моего устройства в нижней части RecyclerView.
Действие добавления и удаления контактов
к временному пути здесь не показывается
упростить пример.
После выбора, кто входит, а кто нет в группе,
Я нажимаю кнопку, чтобы завершить и сохранить контакты
в групповом пути в базе данных FirebaseDatabase.
debinf newuser: button pressed
debinf newuser: Added peopleA inside button
debinf newuser: Added peopleB inside button
debinf newuser: Finish inside the button
debinf newuser: onPause
debinf mainpage: onRestart
debinf mainpage: onStart
debinf mainpage: onResume
debinf newuser: onStop
debinf newuser: onDestroy
Как и ожидалось, MainActivity называется
после того, как я нажимаю кнопку в NewUserActivity.
Пока все хорошо
Второй раунд.
Теперь давайте сделаем тот же процесс снова.
Я щелкнул по имени группы, чтобы перейти к GroupActivity.
debinf mainpage: onPause
debinf groupactivity: onStart
debinf groupactivity: onResume
debinf mainpage: onStop
Теперь я нажал кнопку floatAction.
debinf groupactivity: onPause
debinf newuser: onCreate
debinf groupact: passed by intentextrasA
debinf groupact: passed by intentextrasB
debinf newuser: onStart
debinf newuser: onResume
debinf newuser: Load peopleA to ContactAdded
debinf newuser: Load peopleB to ContactAdded
debinf newuser: button pressed
debinf newuser: Added peopleA inside button
debinf newuser: Added peopleB inside button
debinf newuser: Finish inside the button
debinf groupactivity: onStop
debinf groupactivity: onDestroy
Как видно, кнопка была нажата сама по себе.
И я надеялся пойти, чтобы загрузить людей на новый путь
и снова выберите, кто входит, а кто нет.
Я думаю, что это связано с сохраненным экземпляром.
Что мне нужно сделать, чтобы NewUserActivity работало само по себе?
потому что это вызывает беспорядок с процессом добавления и удаления
контакты. Кроме того, я удаляю все свои контакты из группы.
Заранее спасибо!
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: Нажмите прослушиватель для адаптера MainActivity
holder.mLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent groupActivity = new Intent(mContext,GroupActivity.class);
groupActivity.putExtra("groupName",groupList.get(position).getGroupId());
groupActivity.putExtra("groupPushKey",groupList.get(position).getGroupKey());
// Because we are in Adapter, the Adapter does not know what context is
// so the activity is started from the mContext
mContext.startActivity(groupActivity);
}
});
FloatActionButton в группе Активность
AddContact = (FloatingActionButton) findViewById(R.id.addContactInGroup);
AddContact.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent newUserToGroup = new Intent(getApplicationContext(),NewUserToGroupActivity.class);
newUserToGroup.putExtra("groupName",groupNameIntent);
newUserToGroup.putExtra("groupPushKey",groupKeyIntent);
startActivity(newUserToGroup);
finish();
}
});
Нажмите прослушиватель для кнопки в NewUserActivity
mUpdateGroupBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateGroupUsers();
}
});
Где:
private void updateGroupUsers () {
RootRef.child("ContactAdded").child(currentUser).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
Log.i("debinf newuser", "button pressed");
Map<String, Object> updateGroupUsersMap = new HashMap<>();
for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
Log.i("debinf newuser", "Added people inside button : " + childSnapshot.getKey());
updateGroupUsersMap.put(childSnapshot.getKey(),"");
}
FirebaseDatabase.getInstance().getReference().child("Group").child(currentUser).child(groupKeyIntent).child(groupNameIntent).setValue(updateGroupUsersMap);
FirebaseDatabase.getInstance().getReference().child("ContactAdded").child(currentUser).removeValue();
Log.i("debinf newuser","Finish inside the button");
finish();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}