Запуск пользовательского действия на BackPress запускает действие дважды - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть действительно странная проблема, я не могу обернуться. Я размышлял над этим часами и совершенно не понимаю, почему мой код ведет себя так.

У меня есть Viewpager, из которого можно удалять изображения, чтобы создать иллюзию обновления в реальном времени. Я открываю одно и то же действие каждый раз, когда фотография удаляется, поэтому содержимое viewpager's будет меняться немедленно и соответственно.

По этой причине я переопределил onBackPressed(), чтобы убедиться, что при запуске этого метода пользователь возвращается к реальному прошлому действию, а не к действию с исходными изображениями. Я читал сообщения об этом и пытался сделать такие вещи, как удалить метод super и добавить метод finish (), но, похоже, ничего не работает.

@Override
public void onBackPressed() {

    //creates two instances of AccountApartementActivity

    overridePendingTransition(0, 0);

    add_button_view.setVisibility(View.INVISIBLE);
    delete_button_view.setVisibility(View.INVISIBLE);

    Intent i = new Intent(ApartementEditActivity.this, AccountAndApartementActivity.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    i.putExtra("fromActivity", "2");
    startActivity(i);
    finish();
    overridePendingTransition(0, 0);

}

Ни в одном из методов жизненного цикла двух действий, которые я переопределил, я не написал код, который сообщает приложению о создании одного и того же действия дважды, или я каким-то образом пропускаю его.

Самое странное, что это работало нормально всего день назад, но сегодня я изменил тип данных одной из моих переменных в моем методе PagerAdapter и с тех пор, как метод onBackPressed() был сломан.

Пожалуйста, дайте мне знать, если я упускаю что-то очевидное, это часто случается.

1 Ответ

0 голосов
/ 07 ноября 2018

Я думаю, что это не лучший способ манипулировать стеком действий таким образом. Вы могли бы в конечном счете исчерпать память.

Я не знаю, как организованы ваши фотографии, возможно, с макетом контейнера, таким как просмотр сетки или просмотр переработчика?

Затем следует обновить представления с помощью адаптера и метода notifyDataSetChanged.

Удачи!

...