Страницы

Поиск по вопросам

вторник, 31 декабря 2019 г.

Как закрыть Activity?

#java #android_sdk


При вызове метода onItemClick нужно закрыть текущую Activity.
В closeActivity() через this.finish() почему-то Activity закрыть нельзя.
Для этого я создал еще один метод, в котором пытаюсь ее закрыть. Но в результате
Activity переходит в "спящий режим" и остается в стеке Activity.
В чём ошибка?

Код методов (сразу с привязкой слушателя к ListView):

lvMain.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView parent, View view, int position, long id) {
        Intent i = new Intent(SelectDictionary.this, MainActivity.class);
        startActivity(i);
        closeActivity();
    }
});

private void closeActivity() {
    this.finish();
}

    


Ответы

Ответ 1



Согласно тык и документации: В манифесте, в объявлении вашей MainActivity добавляем android:noHistory="true" Теперь покидая эту активити (любым способом, в т.ч. запуская новую) она сама вызывает свой finish() и удаляется из стека активити

Ответ 2



В принципе, да, Activity так устроена, что по умолчанию она засыпает, когда другая стартует. Но можно добавить флаг в Intent, чтобы это поменять: Intent i = new Intent(SelectDictionary.this, MainActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i); closeActivity();

Ответ 3



Intent intent = new Intent(ThisActivity.this, NewActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(ThisActivity.this, intent);

Ответ 4



в конце обработчика напиши эту команду и все super.finish();

Комментариев нет:

Отправить комментарий