У меня есть 3 операции. Действие, который приводит к действию B, который в свою очередь может вернуться к действию A или запустить действие C. Однако, если я оттесняю в действии C, приложение должно закрыться.
Подводя итоги:
Как я должен пойти от действия B к C? Этот код в настоящее время дает мне NullPointerException на последней строке:
Intent intent=new Intent(ActivityB.this, ActivityC.class);
startActivity(intent);
ActivityB.this.finish();
ActivityB.this.getParent().finish();
Если я переключаю последние две строки, я также получаю нулевого указателя.
Не знаю, сработает ли это, но вы можете попробовать:
Из действия A запустите действие B для получения результата, используя startActivityForResult ()
В действии B, когда пользователь запускает Действие C, начало действия C.
startActivity ()
возвращается немедленно, поэтому
устанавливает результат, который также проинформирует A о завершении,
Вызов finish ()
в B .
Когда A получает результат от B, A также вызывает finish ()
на себе.
В противном случае вы можете превратить Activity C в отдельное приложение, а затем закрыть первое приложение (с помощью A и B) после того, как оно запустит второе.
P.S. Примите во внимание комментарий Фалмарри, продвигаясь вперед!
Удачи.
Пусть каждое действие ожидает результата следующего действия и само завершает работу, если это происходит.
Вы можете использовать специальный код результата, чтобы указать, что вы хотите завершить действие.
Вы должны использовать метод onActivityResult в родительской Activity
Предположим, Activity A является родителем Activity B. Если вы хотите нажать кнопку back в активности B, чтобы выйти из приложения (также выйти из активности A)
В вашей активности B, в onStop()
или onDestroy()
вы вызываете
setResult(0); //any int number is fine
это передаст код результата родительской активности.
Ваша родительская активность A прослушивает код результата.
вам нужно будет использовать метод onActivityResult
внутри метода вы можете вызвать
if(resultCode == 0) //matches the result code passed from B
{
ActivityA.this.finish()
}
Это работает для меня :)