Home » Android

How to use bundle class for passing data of any type in Android?

In this article we are going learn how to use bundle class to pass data between activities and initializes key for the values we pass?
Submitted by Manu Jemini, on January 20, 2018

Bundle is used to move data from one activity to another. This is very helpful when you need some data in an activity which will come from another activity.

In the example below, we have implemented two activities, namely MainActivity and SecondActivity. First, let us understand what we are doing here.

We are using the First layout to show two EditTexts two have a nice looking interface for our user. We have an onClick listener which is used to invoke the class OnClickListener, which in turn takes the values from the EditTexts and save them in the strings. These string namely field1 and field2 will be the values of the EditTexts.

To switch the control from one activity to another activity we need Intent. So to initialize the Intent class object we use this line.

 Intent I=new Intent(MainActivity.this, SecondActivity.class);
intent and acticity

Image source: https://duythanhcse.files.wordpress.com/2013/04/24_intent_4.png

The First parameter to the constructor is the context of the current activity and the second parameter is the class of the activity to which we want to go.

    Bundle b = new Bundle();
    b.putString("dataone",data1);
    b.putString("datatwo",data2);

Here this is making an object of Bundle class and also putting the data fields we have from the EditTexts.

The Only thing left is to put the bundle with Intent object and start the activity.

    I.putExtras(b);
    startActivity(I);

In the SecondActivity, we take our strings out from the Intent and use the values to change the content of TextViews of second layout file.

    Bundle b= getIntent().getExtras();

Java file 1

package com.example.hp.demo;

import android.content.Context;
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
{
    EditText field1,field2;
    Button B;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        field1=(EditText)findViewById(R.id.field1);
        field2=(EditText)findViewById(R.id.field2);
        B = (Button) findViewById(R.id.button);
        B.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String data1=field1.getText().toString();
            String data2=field2.getText().toString();

            Intent I=new Intent(MainActivity.this, SecondActivity.class);

            Bundle b = new Bundle();
            b.putString("dataone",data1);
            b.putString("datatwo",data2);

            I.putExtras(b);

            startActivity(I);

        }});
    }
}

Java file 2

package com.example.hp.demo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class SecondActivity extends AppCompatActivity {
TextView textview;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        textview=(TextView)findViewById(R.id.textView);
        Bundle b= getIntent().getExtras();

        String data1= b.getString("dataone");
        String data2= b.getString("datatwo");

        textview.setText("Field1 : "+data1+"\nField2 : "+data2);
    }
}

Xml file 1

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="1">

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/field1"
        android:layout_alignParentStart="true"
        android:layout_alignParentEnd="true"
        android:hint="field1" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="phone"
        android:ems="10"
        android:id="@+id/field2"
        android:layout_below="@+id/field1"
        android:layout_alignParentStart="true"
        android:layout_alignParentEnd="true"
        android:hint="field2" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click"
        android:id="@+id/button"
        android:layout_below="@+id/field2"
        android:layout_alignParentStart="true" />
</RelativeLayout>

Xml file 2

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.hp.demo.SecondActivity">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:id="@+id/textView"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentEnd="true" />

</RelativeLayout>

Android manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.hp.demo">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SecondActivity"></activity>
    </application>

</manifest>

Output

Output 1 - Use of bundle class in Android

Output 2 - Use of bundle class in Android







Comments and Discussions

Ad: Are you a blogger? Join our Blogging forum.





Languages: » C » C++ » C++ STL » Java » Data Structure » C#.Net » Android » Kotlin » SQL
Web Technologies: » PHP » Python » JavaScript » CSS » Ajax » Node.js » Web programming/HTML
Solved programs: » C » C++ » DS » Java » C#
Aptitude que. & ans.: » C » C++ » Java » DBMS
Interview que. & ans.: » C » Embedded C » Java » SEO » HR
CS Subjects: » CS Basics » O.S. » Networks » DBMS » Embedded Systems » Cloud Computing
» Machine learning » CS Organizations » Linux » DOS
More: » Articles » Puzzles » News/Updates


© https://www.includehelp.com some rights reserved.