У меня есть активность 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 для макета. Надеюсь это поможет!