Приходится два раза нажимать кнопку «Назад»

Я пытаюсь реализовать простой back button на activity, чтобы перейти к предыдущему activity, но происходит какое-то странное поведение, когда я вызываю метод finish() - проблема в том, что мне нужно нажать кнопку back ДВА раза? Почему это происходит? В обратном методе у меня есть только finish(). Как еще можно перейти к предыдущему сохраненному activity без instantiate совершенно нового Intent?

  public void back1 (View view){
    this.finish();
    }

Это вторая попытка с тем же результатом:

 ImageButton buttonback = (ImageButton) findViewById(R.id.imageButton6);

    buttonback.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onBackPressed();
        }
    });

person Nikanor    schedule 05.10.2015    source источник
comment
вызовите super.onBackPressed() внутри вашего метода onBackPressed().   -  person Rustam    schedule 05.10.2015
comment
как кнопка может знать, что нужно вызывать onBackPressed вместо моей функции back()?   -  person Nikanor    schedule 05.10.2015
comment
покажи свой код пожалуйста   -  person Ilya Blokh    schedule 05.10.2015
comment
java.lang.IllegalStateException: не удалось найти метод onBackPressed(View) в классе активности com.bokaestate.krusty.drugi.ViewAd для обработчика onClick   -  person Nikanor    schedule 05.10.2015
comment
Вы должны опубликовать свой код активности здесь   -  person DDsix    schedule 05.10.2015
comment
Код огромен. Мне просто нужна подсказка, почему finish() перезапускает текущую активность, а при втором щелчке возвращается.   -  person Nikanor    schedule 05.10.2015
comment
Finish не перезапускает текущее действие. Что-то еще в вашем коде не так, но мы не узнаем, что именно, потому что не можем угадать ваш код.   -  person Tim    schedule 05.10.2015
comment
вам не нужно публиковать весь код... просто опубликуйте onclicklistener   -  person Angad Tiwari    schedule 05.10.2015
comment
Хорошо, я написал, но все стандартно..   -  person Nikanor    schedule 05.10.2015
comment
Скорее всего, вы начинаете действие дважды. При нажатии back вы заканчиваете один, а другой идет вперед. Проверьте свои onCreate и onResume на наличие всего, что может использовать намерения или запускать какие-либо действия.   -  person Bonatti    schedule 05.10.2015
comment
Действия добавляются, как в стек, чем больше вы создаете и запускаете действие, тем больше его добавляется в стек. Как указано @bonatti, проверьте ваш начальный код действия. Проверьте, запускает ли он действие дважды   -  person Abx    schedule 05.10.2015
comment
О, да. в этом была проблема .. У меня было как startActivityForResult(trecaAktivnost, 0); и startActivity(трекаАктивность); Спасибо вам, ребята!   -  person Nikanor    schedule 05.10.2015
comment
Выберите ответ или отредактируйте/закройте свой вопрос.   -  person Bonatti    schedule 05.10.2015


Ответы (3)


Скорее всего, вы начинаете действие дважды.

При нажатии назад вы заканчиваете один, а другой идет вперед. Проверьте свои onCreate и onResume на наличие всего, что может использовать намерения или запускать какие-либо действия.

person Bonatti    schedule 05.10.2015

 @Override
    public void onBackPressed() {
        super.onBackPressed();
    }

добавьте, что в ваш код супервызов закрывает действие, нет необходимости вызывать finish()

person Mightian    schedule 05.10.2015

Если вы просто хотите, чтобы кнопка «Назад» работала, не нужно переопределять метод onBackPressed в Activity.

Если вы хотите разместить настраиваемую кнопку в поле зрения и вернуть действие этой кнопке, вам необходимо написать прослушиватель кликов кнопки в том же

    backbutton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            finish();
        }
});
person Jiju Induchoodan    schedule 05.10.2015
comment
Предоставьте весь код активности. Я предполагаю, что вы делаете что-то не так. - person Jiju Induchoodan; 05.10.2015