Issue
I have a very simple app based on the Building Your First App tutorial. There are two activities: MainActivity
invokes DisplayMessageActivity
through startActivity()
.
When entering DisplayMessageActivity
, I see:
MainActivity.onStop()
as expected, but when I press the back button to return to the parent MainActivity
, I get:
MainActivity.onDestroy()
MainActivity.onCreate(null)
MainActivity.onStart()
The activity always gets destroyed for this very simple application. But according to the documentation (second bullet point), the typical behavior is for the activity to be stopped and restarted in such cases.
Also, onDestroy()
does not happen when first starting the child activity, but only once back button is clicked.
Two questions:
- Is there a way to prevent parent from being destroyed in the common case?
- Why is
null
being passed toonCreate()
here? This prevents me from preserving state throughonSaveInstanceState()
.
Note that I've verified that Settings -> Developer Options -> Apps -> Don't keep activities is unchecked.
Edit:
Here is how the child activity is linked to parent:
<activity
android:name="com.example.helloworld.DisplayMessageActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName="com.example.helloworld.MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.helloworld.MainActivity" />
</activity>
Tracing through DisplayMessageActivity.onOptionsItemSelected()
, I can see that it's calling Activity.onNavigateUp()
.
Solution
Thanks to Greg Giacovelli's comments, I found the answer here. The solution was to set android:launchMode="singleTop"
to the parent activity.
I still can't understand why such basic information is so unknown and hard to find!
Answered By - mtoossi
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.