Reputation: 756
I have an activity A, which starts activity B and activity B starts activity C. Is there a way not to show activity B. I want this behavour because if there is no content (eg for ListView) for activity B, show activity C on which I select some data, and then press back button to go back to activity B. The point is that I would like to have activity B on activity stack, but not to show it in certain cases.
Upvotes: 18
Views: 26949
Reputation: 1670
In your manifest set
android:theme="@android:style/Theme.NoDisplay"
for your activity.
Upvotes: 15
Reputation: 756
I found the solution:
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
}
}
//when came back from activity C, check if activity B was already initialized
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == ACTIVITY_NOT_INITIALIZED) {
//show activity B
setContentView(R.layout.activity_B);
}
}
Upvotes: 18
Reputation: 5183
You can call startActivity, without calling setContentView for a layout. Hope this helps!
Upvotes: 0
Reputation: 8612
just call startActivity()
in onCreate()
method of activity B. It will not be shown, but it will be in activity stack.
Upvotes: 1