Android How to - Pass Data Using an Intent Object








The following shows you the various ways in which you can pass data between activities.

Example

Set up the manifest file

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.java2s.app" >
/*from  w  w  w.  j  a va2  s. c om*/
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.java2s.app.MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:label="Second Activity"
            android:name=".SecondActivity" >
            <intent-filter >
                <action android:name="com.java2s.SecondActivity" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Populate the SecondActivity.java file as follows:

package com.java2s.app;
/*from  w w w.j  a va 2  s.  c om*/
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;


public class SecondActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        Toast.makeText(this, getIntent().getStringExtra("str1"), Toast.LENGTH_SHORT).show();

        Toast.makeText (this,Integer.toString(
                        getIntent().getIntExtra("age1", 0)),
                Toast.LENGTH_SHORT).show();

        Bundle bundle = getIntent().getExtras();

        Toast.makeText (this, bundle.getString("str2"),
                Toast.LENGTH_SHORT).show();

        Toast.makeText (this,Integer.toString(bundle.getInt("age2")),
                Toast.LENGTH_SHORT).show();
    }

    public void onClick(View view) {
        Intent i = new Intent();
        i.putExtra("age3", 45);

        i.setData(Uri.parse("Something passed back to main activity"));

        setResult(RESULT_OK, i);

        finish();
    }

}
Add the following statements to the MainActivity.java file:
 package com.java2s.app;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
//from   ww w .j  ava  2  s .  c  o  m
public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout parentContainer = new LinearLayout(this);
        parentContainer.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
                LayoutParams.MATCH_PARENT));
        parentContainer.setOrientation(LinearLayout.VERTICAL);

        Button button = new Button(this);
        button.setText("Open");
        parentContainer.addView(button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent("com.java2s.SecondActivity");
                i.putExtra("str1", "This is a string");
                i.putExtra("age1", 25);

                Bundle extras = new Bundle();
                extras.putString("str2", "This is another string");
                extras.putInt("age2", 35);

                i.putExtras(extras);

                startActivityForResult(i, 1);

            }
        });

        setContentView(parentContainer);
    }
    public void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if (requestCode == 1 && resultCode == RESULT_OK) {
            Toast.makeText (this, Integer.toString(
                            data.getIntExtra("age3", 0)),
                    Toast.LENGTH_SHORT).show();
            Toast.makeText (this, data.getData().toString(),
                    Toast.LENGTH_SHORT).show();
        }
    }

}
null