Android Up Button Tutorial — Back Navigation in Android Toolbar
Navigation is one of the most important parts of Android application development.
Android provides:
- Back button navigation
- Up button navigation
- Navigation Component
- Toolbar navigation
In this tutorial, we will learn how to implement:
- Toolbar Up Button
- Parent Activity navigation
- AndroidManifest parent activities
- Modern AndroidX navigation
- Multi-activity back navigation
What Is Up Button in Android?
The Up Button is the back arrow shown inside the Toolbar or ActionBar.
It allows users to navigate:
- Back to parent Activity
- Up in application hierarchy
- Between related screens
Difference Between Back Button and Up Button
| Back Button | Up Button |
|---|---|
| System navigation | App hierarchy navigation |
| Returns previous screen | Returns parent screen |
| Managed by Android system | Managed by app developer |
What We Will Build
In this example:
- MainActivity opens Activity2
- Activity2 opens Activity3
- Toolbar Up Button navigates backward
- Parent hierarchy handled automatically
Important Modern Android Note
Older tutorials use:
android.support.*
which is deprecated.
Modern Android applications should use:
androidx.*
Step 1 — Configure Parent Activities in AndroidManifest.xml
Every child activity should define:
android:parentActivityName
Modern Manifest Example
<application>
<activity
android:name=".Activity2"
android:parentActivityName=
".MainActivity"/>
<activity
android:name=".Activity3"
android:parentActivityName=
".Activity2"/>
<activity
android:name=".MainActivity">
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"/>
<category
android:name=
"android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
What Is parentActivityName?
This attribute defines the parent screen hierarchy.
Android uses it for:
- Toolbar Up navigation
- Task stack generation
- Navigation consistency
Step 2 — Create MainActivity Layout
Create:
res/layout/activity_main.xml
Modern ConstraintLayout Version
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Open Activity 2"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
Why Use ConstraintLayout?
ConstraintLayout provides:
- Better rendering performance
- Responsive layouts
- Flat hierarchy
- Flexible positioning
Step 3 — Create MainActivity.java
package com.example.upbutton;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity
extends AppCompatActivity {
@Override
protected void onCreate(
Bundle savedInstanceState
) {
super.onCreate(
savedInstanceState
);
setContentView(
R.layout.activity_main
);
Button button =
findViewById(
R.id.button
);
button.setOnClickListener(
view -> {
Intent intent =
new Intent(
this,
Activity2.class
);
startActivity(intent);
}
);
}
}
Step 4 — Create Activity2.java
package com.example.upbutton;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
public class Activity2
extends AppCompatActivity {
@Override
protected void onCreate(
Bundle savedInstanceState
) {
super.onCreate(
savedInstanceState
);
setContentView(
R.layout.activity_2
);
if (
getSupportActionBar()
!= null
) {
getSupportActionBar()
.setTitle(
"Activity 2"
);
getSupportActionBar()
.setDisplayHomeAsUpEnabled(
true
);
}
Button button2 =
findViewById(
R.id.button2
);
button2.setOnClickListener(
view -> {
Intent intent =
new Intent(
this,
Activity3.class
);
startActivity(intent);
}
);
}
}
Understanding setDisplayHomeAsUpEnabled()
This method enables Toolbar Up Button.
Example
getSupportActionBar()
.setDisplayHomeAsUpEnabled(
true
);
Step 5 — Create Activity3.java
package com.example.upbutton;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class Activity3
extends AppCompatActivity {
@Override
protected void onCreate(
Bundle savedInstanceState
) {
super.onCreate(
savedInstanceState
);
setContentView(
R.layout.activity_3
);
if (
getSupportActionBar()
!= null
) {
getSupportActionBar()
.setTitle(
"Activity 3"
);
getSupportActionBar()
.setDisplayHomeAsUpEnabled(
true
);
}
}
}
How Up Navigation Works
- User opens Activity2
- Toolbar arrow appears
- User taps Up Button
- Android checks parentActivityName
- Parent Activity opens
Activity Navigation Hierarchy
MainActivity
↓
Activity2
↓
Activity3
Modern Toolbar Recommendation
Modern Android apps should use:
- MaterialToolbar
- Navigation Component
- Single Activity Architecture
- Jetpack Compose Navigation
Modern Material Toolbar Example
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
Navigation Component Alternative
Modern Android applications now commonly use:
Navigation Component
instead of multiple activities.
Benefits of Navigation Component
- Automatic back stack handling
- Safe navigation
- Fragment navigation
- Deep links
- Animated transitions
Jetpack Compose Alternative
Jetpack Compose uses:
NavHost
and:
TopAppBar
for modern navigation systems.
Compose Navigation Example
NavHost(
navController = navController,
startDestination = "home"
)
Common Beginner Mistakes
1. Forgetting parentActivityName
Up navigation requires Manifest hierarchy configuration.
2. NullPointerException on ActionBar
Always check:
getSupportActionBar() != null
3. Using Deprecated Support Libraries
Always migrate to AndroidX.
Best Practices
- Use MaterialToolbar
- Use Navigation Component
- Keep navigation hierarchy clean
- Use AndroidX libraries
- Prefer single activity architecture
FAQ
What is Up Button in Android?
Up Button is Toolbar back navigation for parent Activity hierarchy.
How do I enable Up Button?
Use:
setDisplayHomeAsUpEnabled(true)
What is the modern navigation solution?
Navigation Component and Jetpack Compose Navigation are modern solutions.
Conclusion
The Android Up Button provides clean hierarchical navigation between screens and improves application usability.
It is an essential part of Android navigation architecture and Toolbar design.
Modern Android applications should combine AndroidX, Material Design, Navigation Component, and scalable architecture for production-grade navigation systems.
About the Author
Salil Jha is a Full Stack and Mobile Developer specializing in Android, React Native, fintech systems, scalable SaaS platforms, and developer tooling products.
CodeChain Dev — Build Modern Products. Solve Real Problems.
Deep Structural Diagnostics.
Mastering JSON is only the first step. Use our industrial-grade workbench to format, validate, and synthesize models for your production APIs.