How to Pass Data Between Activities in Android

How to Pass Data Between Activities in Android

22 May 2024 Stephan Petzl Leave a comment Tech-Help

In Android development, passing data between activities is a common requirement. For instance, you may need to pass a session ID or user credentials from a login activity to other activities within your app. This guide will walk you through several methods to achieve this, ensuring your data is accessible across different activities.

Using Intents to Pass Data

One of the most straightforward ways to pass data between activities is by using Intents. Here’s how you can do it:

Sending Data

In the current activity, create an Intent and attach the data you want to send:

String value = "Hello world";
Intent i = new Intent(CurrentActivity.this, NewActivity.class);
i.putExtra("key", value);
startActivity(i);

Receiving Data

In the new activity, retrieve the data from the Intent:

Bundle extras = getIntent().getExtras();
if (extras != null) {
    String value = extras.getString("key");
    // The key argument here must match that used in the other activity
}

Using the Application Object

If you need to maintain the same state across multiple activities, you can use the Application object. This method is useful for sharing complex objects or data structures:

Extending Application

First, extend the Application class to create a global state:

public class MyApp extends Application {
    private String sessionId;

    public String getSessionId() {
        return sessionId;
    }

    public void setSessionId(String sessionId) {
        this.sessionId = sessionId;
    }
}

Accessing the Application Object

In any activity, you can access the data stored in the Application object:

MyApp app = (MyApp) getApplication();
app.setSessionId("12345"); // Setting the session ID

String sessionId = app.getSessionId(); // Retrieving the session ID

Using SharedPreferences

SharedPreferences can also be used to store and retrieve data across activities. This method is particularly useful for storing small amounts of data:

Saving Data

Save data to SharedPreferences in the current activity:

SharedPreferences preferences = getSharedPreferences("session", MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("sessionId", "12345");
editor.commit();

Retrieving Data

Retrieve the data in another activity:

SharedPreferences preferences = getSharedPreferences("session", MODE_PRIVATE);
String sessionId = preferences.getString("sessionId", null);

Choosing the Right Method

The method you choose depends on your specific requirements:

  • Intents: Best for passing simple data like strings and numbers between activities.
  • Application Object: Suitable for sharing complex objects or maintaining state across multiple activities.
  • SharedPreferences: Ideal for storing small amounts of persistent data.

Enhancing Your Development Workflow with Repeato

As you streamline your data passing methods, consider using Repeato to automate your app testing. Repeato is a no-code test automation tool for iOS and Android, which allows you to create, run, and maintain automated tests efficiently. With its computer vision and AI capabilities, Repeato ensures your app’s functionality is thoroughly tested, allowing you to focus on development.

For more information, visit our documentation or explore our blog for the latest updates and best practices.

Like this article? there’s more where that came from!