Начать деятельность, не показывая ее - PullRequest
14 голосов
/ 20 декабря 2011

У меня есть действие A, которое запускает действие B, а действие B запускает действие C. Есть ли способ не показывать действие B. Я хочу это поведение, потому что, если нет содержимого (например, для ListView) для действия B, покажитемероприятие C, в котором я выбираю некоторые данные, а затем нажимаю кнопку «назад», чтобы вернуться к занятию B. Дело в том, что я хотел бы иметь занятие B в стеке занятий, но не показывать его в некоторых случаях.

Ответы [ 5 ]

17 голосов
/ 21 декабря 2011

Я нашел решение:

  • Задание A начинает задание B с дополнительным параметром (intent.putExtra («что-то», true))
  • Деятельность B:
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getIntent().hasExtra("something") && getIntent().getBooleanExtra("something", false) {
            //show activity B
        setContentView(R.layout.activity_B);
    } else {
            //don't show activity B, start activity C
        startActivityForResult(activity_C, ACTIVITY_NOT_INITIALIZED); //start activity C
    }
}

// когда вернулись из операции C, проверьте, была ли операция B уже инициализирована

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == ACTIVITY_NOT_INITIALIZED) {
        //show activity B
        setContentView(R.layout.activity_B);
  }
}
13 голосов
/ 28 марта 2014

В вашем наборе манифестов

android:theme="@android:style/Theme.NoDisplay"

для вашей деятельности.

2 голосов
/ 20 декабря 2011

не устанавливать setContentView () для действия B

1 голос
/ 20 декабря 2011

просто вызовите startActivity() в onCreate() метод действия B. Он не будет показан, но он будет в стеке действий.

0 голосов
/ 20 декабря 2011

Вы можете вызвать startActivity, не вызывая setContentView для макета. Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...