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();
Ваш предыдущий вид деятельности, который был в фоновом режиме, может быть на переднем плане вашего кода.
Надеюсь, поможет.