Android finish() StartActivityForResult не работает

У меня проблема в Android с функцией finish():

Я пытаюсь получить следующее поведение: когда пользователь запускает приложение в первый раз, я хочу запустить процедуру мастера. Я использую PageViewer с разными фрагментами. Я хочу, чтобы приложение закрывалось, если пользователь нажимает кнопку "Назад", пока она находится на первой странице.

Вот что я сделал:

В основном задании я проверяю, запустил ли пользователь приложение впервые. Если это так, то я начинаю новое действие (мастер)

if(firstTime) {
    // here activity is the main activity
    Intent i = new Intent(activity, Wizard.class);
    activity.startActivityForResult(i,0);
}

В классе действий мастера я переопределяю метод onBackPressed:

@Override
public void onBackPressed(){
    if(pager.getCurrentItem() == 0) {
        setResult(5);
        finish();
    } else{
        // code
    }
}

При вызове finish() Android вызывает метод onActivityResult родительского действия (основного действия):

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
    if(resultCode == 5) {
        finish()
    } 
}

Я ожидаю, что приложение будет закрыто. То, что я получаю, это то, что Android вызывает методы onResume и затем onCreate, начиная мастера с самого начала. Затем, если из этого нового мастера я снова нажму, приложение закрывается, как и ожидалось.

Спасибо за любую помощь!

1 ответ

Решение

Попробуйте это вместо finish(); для выхода из всего приложения.

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();

Ваш предыдущий вид деятельности, который был в фоновом режиме, может быть на переднем плане вашего кода.

Надеюсь, поможет.

Другие вопросы по тегам