In this tutorial you will learn to pass data from one activity to another in android with and without using intent.
Basically we can send data between activities in two ways.
- Using Intent
- Using Global Variables
Below I have discussed both the methods in detail.
How to Pass Data from One Activity to Another in Android
Method 1: Using Intent
We can send data while calling one activity from another activity using intent. All we have to do is add the data to Intent object using putExtra() method. The data is passed in key value pair. The value can be of types like int, float, long, string, etc.
Sending Data
Intent intent = new Intent(context, DestinationActivityName.class); intent.putExtra(Key, Value); startActivity(intent);
Here I am sending just one value, in the same way you can attach more values by using putExtra() method.
Retrieving Data
If the data sent is of type string then it can be fetched in following way.
Intent intent = getIntent(); String str = intent.getStringExtra(Key);
There are several other methods like getIntExtra(), getFloatExtra(), etc to fetch other types of data.
Below is the example of passing data between activities using intents.
Example
In this example a message is passed from first activity to second when a button is pressed.
activity_first.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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:padding="15dp" tools:context="com.androidexample.First" android:orientation="vertical"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/textBox" android:hint="Enter Your Message"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/passButton" android:text="Pass"/> </LinearLayout>
activity_second.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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:padding="15dp" tools:context="com.androidexample.Second"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="" android:id="@+id/text"/> </LinearLayout>
First.java
package com.androidexample; 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 First extends AppCompatActivity { EditText textBox; Button passButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_first); textBox = (EditText)findViewById(R.id.textBox); passButton = (Button)findViewById(R.id.passButton); passButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String str = textBox.getText().toString(); Intent intent = new Intent(getApplicationContext(), Second.class); intent.putExtra("message", str); startActivity(intent); } }); } }
Second.java
package com.androidexample; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class Second extends AppCompatActivity { TextView text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); text = (TextView)findViewById(R.id.text); Intent intent = getIntent(); String str = intent.getStringExtra("message"); text.setText(str); } }
Screenshots
Method 2: Using Global Variables
We can declare a global variable in a separate class. To make it global just declare it as public static. This will allow us to directly access the variable anywhere in our application using its class name.
Just assign the value that you want to pass in global variable inside source activity and fetch it in destination activity by accessing the global variable.
Below example shows how to do this.
Example
The code for activity_first.xml and activity_second.xml will be same as above example.
DemoClass.java
package com.androidexample; public class DemoClass { public static String message; //global variable }
First.java
package com.androidexample; 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 First extends AppCompatActivity { EditText textBox; Button passButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_first); textBox = (EditText)findViewById(R.id.textBox); passButton = (Button)findViewById(R.id.passButton); passButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { DemoClass.message = textBox.getText().toString(); Intent intent = new Intent(getApplicationContext(), Second.class); startActivity(intent); } }); } }
Second.java
package com.androidexample; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class Second extends AppCompatActivity { TextView text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); text = (TextView)findViewById(R.id.text); text.setText(DemoClass.message); } }
Comment below if you have doubts or know any other way to pass data from one activity to another in android.
The post How to Pass Data from One Activity to Another in Android appeared first on The Crazy Programmer.