Начать деятельность, не показывая ее

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

Ответ 1

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

  • Действие A начинает действие B с дополнительным параметром (intent.putExtra("something", 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);
  }
}

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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