Pass Data Between Android Activities

In this Android tutorial you will learn how to pass data between Android Activities. You will learn how to pass data forward from activity A to activity B and also how to return result from activity B to activity A. Let’s get started.

Pass Data From One Android Activity to Another (Forward)

To pass data from activity A to activity B use the following code snippet. Let’s assume you need to pass data from MainActivity to an Activity2.java file.

Intent activity2Intent = new Intent(getApplicationContext(), Activity2.class);
activity2Intent.putExtra("extra_text", "Hello world");

startActivity(activity2Intent);

Note the use of putExtra() method. You can use it to pass Key -> Value pairs to your next activity.

Where:

  • extra_text – is the key,
  • Hello world – is the value.

Read Data

To read data in Activity2.java file use the following code snippet.

Intent intent = getIntent();
String extraText = intent.getStringExtra("extra_text");

Pass Back a Result

If you need to start an Activity which can then return back a result then when starting an activity use startActivityForResult() instead of startActivity(). Here is code example:

Starting a new activity when Button is clicked

package com.kargopolov.differentexamples;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    static final int RESULT_CODE = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button buttonOne = findViewById(R.id.buttonOne);
        buttonOne.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                System.out.println("Button Clicked");
  
                Intent activity2Intent = new Intent(getApplicationContext(), Activity2.class);
                activity2Intent.putExtra("extra_text", editText1String);

                startActivityForResult(activity2Intent, RESULT_CODE);
            }

        });
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   
        String messageReturned = data.getStringExtra("message_return");

        System.out.println("Result code = " + resultCode);
        System.out.println("Message returned = " + messageReturned);

    }


}

Notice a new method added onActivityResult(). This method will be called when Activity2 returns a result.

Returning a Result

To make Activity2 return a result together with some Extra information in an Intent follow the following code snippet.

Intent intentWithResult = new Intent();
intentWithResult.putExtra("message_return", "This data is returned when user click button in target activity.");
setResult(1, intentWithResult);
finish();

Here is a complete code from Activity2 that reads data passed from MainActivity and then returns data back to MainActivity.

package com.kargopolov.differentexamples;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
 
public class Activity2 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_2);

        // Reading Data from Main Activity
        Intent intent = getIntent();
        String extraText = intent.getStringExtra("extra_text");

        System.out.println("Received data from Main activity = " + extraText);
 

        // Sending Result and Extra back to Main Activity 
        Intent intentWithResult = new Intent();
        intentWithResult.putExtra("message_return", "This data is returned when user click button in target activity.");
        setResult(1, intentWithResult);
        finish();
    }
}

I hope this short Android tutorial was helpful.