The easiet way is to specify a Hierarchical Parent
during activity creation (File -> New -> Activity -> Basic Activity
) in Android Studio
.
It shall create an activity declaration in AndroidManifest.xml
with parentActivityName
and android.support.PARENT_ACTIVITY
meta-data.
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<application ...>
...
<activity
android:name=".view.DemoActivity"
android:label="@string/title_activity_demo"
android:parentActivityName=".MainActivity"
android:theme="@style/AppTheme.NoActionBar">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.luasoftware.luapass.MainActivity" />
</activity>
</application>
</manifest>
The following onCreate
code is generated for your activity.
class BackupActivity : AppCompatActivity() { ... override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_backup) setSupportActionBar(toolbar) supportActionBar?.setDisplayHomeAsUpEnabled(true) // supportActionBar?.setDisplayShowHomeEnabled(true) }}
NOTE: if you didn't specify a parent activity in AndroidManifest.xml
, you would need to call supportActionBar?.setDisplayShowHomeEnabled(true)
.
By default, the Up/Back
button doesn't go back to the previous activity, but launch the parent MainActivity
instead.
To override Up/Back
button to go back to the previous activity, override onSupportNavigateUp to call onBackPressed.
class BackupActivity : AppCompatActivity() {
...
override fun onSupportNavigateUp(): Boolean {
onBackPressed()
return true
}
}
If you override onOptionsItemSelected
and handled android.R.id.home
, then onSupportNavigateUp
will not be called.
override fun onOptionsItemSelected(item: MenuItem): Boolean { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. return when (item.itemId) { android.R.id.home -> { onBackPressed() true } else -> super.onOptionsItemSelected(item) }}