Android10/26/2019

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

  1. User opens Activity2
  2. Toolbar arrow appears
  3. User taps Up Button
  4. Android checks parentActivityName
  5. 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.