Изменить: 23/10/2016: Это не решено, и я все еще ищу ответ. Я собираюсь переписать этот вопрос, чтобы сделать его более ясным, поскольку теперь я знаю, что вызывает эту проблему.
Редактировать: 26/10/2016: SOMETHING FOUND: При попытке найти проблему у меня появилась ошибка, которая помогла мне что-то найти. Получается, если у меня есть это в моей базе данных Firebase:
Campaigns{
UNQ_KEY: 1 //This is being set in the transaction
}
Вместо:
Campaigns{
UNQ_KEY:{
count: 1 //this is being set in the transaction
}
}
Проблема не выполняется.
Итак, в заключение, это, вероятно, ошибка рекурсии.
У меня есть эта транзакция Firebase:
database.runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
Long preUserIncrementedInt = Long.parseLong(b.getText().toString());
Long userIncrementedInt = ++preUserIncrementedInt;
mutableData.child("users").child(getUid()).child("count").setValue(userIncrementedInt);
Long preIncrementedTotalCount = mutableData.child("count").getValue(Long.class);
Long incrementedTotalCount = ++preIncrementedTotalCount;
mutableData.child("count").setValue(incrementedTotalCount);
return Transaction.success(mutableData);
}
@Override
public void onComplete(DatabaseError databaseError, boolean b, DataSnapshot dataSnapshot) {
if (databaseError != null)
Log.wtf(TAG,databaseError.getMessage());
}
});
Эта строка:
mutableData.child("users").child(getUid()).child("count").setValue(userIncrementedInt);
и этот:
mutableData.child("count").setValue(incrementedTotalCount);
Когда я запускаю транзакцию, тот же актив снова создается и открывается. Когда я нажимаю кнопку "Назад", она переходит к предыдущей операции в задней части. НО, предыдущее действие в backstack - это та же самая деятельность. Вот так:
Каждый раз, когда я нажимаю кнопку, в заднем стеке создается новое действие (действие с проблемой).
Чтобы показать вам, как это выглядит, вот GIF:
Почему это происходит?