Конец родительское и текущее действие в Android

У меня есть 3 операции. Действие, который приводит к действию B, который в свою очередь может вернуться к действию A или запустить действие C. Однако, если я оттесняю в действии C, приложение должно закрыться.

Подводя итоги:

  • Действие A запускает действие B
  • При оттеснении на действии B должен привести к A
  • Действие B запускает действие C
  • При оттеснении на действии C должен закрыть приложение

Как я должен пойти от действия B к C? Этот код в настоящее время дает мне NullPointerException на последней строке:

Intent intent=new Intent(ActivityB.this, ActivityC.class);
startActivity(intent);
ActivityB.this.finish();
ActivityB.this.getParent().finish();

Если я переключаю последние две строки, я также получаю нулевого указателя.

49
задан hpique 4 August 2010 в 11:17
поделиться

3 ответа

Не знаю, сработает ли это, но вы можете попробовать:

  • Из действия A запустите действие B для получения результата, используя startActivityForResult ()

  • В действии B, когда пользователь запускает Действие C, начало действия C.

startActivity () возвращается немедленно, поэтому

  • устанавливает результат, который также проинформирует A о завершении,

  • Вызов finish () в B .

  • Когда A получает результат от B, A также вызывает finish () на себе.

В противном случае вы можете превратить Activity C в отдельное приложение, а затем закрыть первое приложение (с помощью A и B) после того, как оно запустит второе.

P.S. Примите во внимание комментарий Фалмарри, продвигаясь вперед!
Удачи.

55
ответ дан 7 November 2019 в 11:30
поделиться

Пусть каждое действие ожидает результата следующего действия и само завершает работу, если это происходит.

Вы можете использовать специальный код результата, чтобы указать, что вы хотите завершить действие.

0
ответ дан 7 November 2019 в 11:30
поделиться

Вы должны использовать метод 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()
}

Это работает для меня :)

12
ответ дан 7 November 2019 в 11:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: