Я создал приложение с 2 экранами: Действие A (основное) и Действие B.
Когда пользователь нажимает кнопку поиска в действии A, он открывает ListView с именем Действие B.
В этом ListView у пользователя есть флажки, по которым он щелкает, и после нажатия кнопки Готово результаты возвращаются в действие А с помощью onActivityResult.
По какой-то причине, если, скажем, я делаю следующее:
1) нажал кнопку поиска в упражнении A. 2) выбрал 1 элемент в занятии B, но не нажал готово. Вместо этого я нажал кнопку возврата. 3) снова войдите в действие B 4) выберите элементы + клик готово
Затем мое приложение вылетает, потому что оно говорит, что результат нулевой.
Похоже, после того, как я нажимаю на кнопка возврата, что результат onActivity не работает между действием A и B.
Мой код:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if(resultCode == ChatActivity.RESULT_OK){
new CountDownTimer(1000, 500) {
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
confirmedBooks = (ArrayList<DiscoverBooks>)data.getSerializableExtra("confirmedItems");
DateInMillis = data.getLongExtra( "dateInMillis", System.currentTimeMillis());
}
}.start();
}
if (resultCode == ChatActivity.RESULT_CANCELED) {
}
}
}
и:
Btn_Done.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent confirmedData = new Intent();
confirmedData.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
confirmedData.putExtra( "confirmedItems", (Serializable) itemsSelected );
confirmedData.putExtra( "dateInMillis",DateInMillis );
setResult(ChatActivity.RESULT_OK,confirmedData);
finish();
}
} );
ПРИМЕЧАНИЕ:
Я добавил строку confirmedData.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
, потому что я надеялся, что он очистит данные из предыдущего выбора, однако, похоже, он также будет работать не очень хорошо.
Если я выполняю эти действия, не нажимая на Кнопка возврата все работает правильно.
Есть ли причины для этого?
Спасибо!