Passing Data Powerfully: Mastering the Ultimate Step-by-Step Guide for Unforgettable Success in 2023

Passing Data - new 2023 - topbar

PASSING DATA BETWEEN ACTIVITIES USING INTENT

In Android, it is common to pass data from one activity to another using an intent. An intent is a messaging object that is used to communicate between different components of an Android application, such as activities, services, and broadcast receivers. In this guide, we will explore how to pass data from one activity to another using intent method in Android.

Basic Steps

Passing Data - new 2023 - imagev1

The following are the basic steps involved in passing data from one activity to another using intent method in Android:

  • Create an Intent object in the source activity.
  • Put extra data in the intent.
  • Start the destination activity.
  • Retrieve the extra data in the destination activity.

CREATE NEW PROJECT IN ANDROID

start a new project in Android Studio, follow these steps. Alternatively you can visit our previous article to see how you can create a new project in android create first project in android

  • Open Android Studio
  • Click on “Start a new Android Studio project” or select “File” -> “New” -> “New Project”
  • Select a project template (e.g. Empty Activity) and click “Next”
  • Configure the project name, package name, save location, and other settings as needed.
  • Click “Finish” to create the project.

As we will pass data from MainActivity into the second activity, therefore you should create second activity. To create a second activity in Android Studio, follow these steps:

  • Right-click on your project in the project explorer and select “New” -> “Activity” -> “Empty Activity”
  • In the “Configure Activity” dialog box, set the activity name, layout name, and other settings as required.
  • Click “Finish” to create the new activity. This will create a new Java class file and a corresponding layout XML file.

Creating an Intent Object

Passing Data - new 2023 - imagev2

To pass data from one activity to another using intent method, we first need to create an intent object in the source activity. An intent object is created using the Intent class constructor. The constructor takes two arguments – the context of the source activity and the class of the destination activity. The context of the source activity can be obtained using the this keyword, and the class of the destination activity can be obtained using the .class syntax.

For example, if we have a MainActivity class and a SecondActivity class, we can create an intent object to start the SecondActivity by clicking a button as explained below.
So, lets first design the layout of our MainActivlty XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Next"
        android:layout_marginLeft="21dp"
        android:layout_marginBottom="11dp"
        android:id="@+id/btnNext"/>


</LinearLayout>

Putting Extra Data in the Intent

Once we create an intent object, we can add extra data to it using the putExtra() method. The putExtra() method takes two arguments – a key and a value. The key is a string that is used to identify the data, and the value can be any data type that can be serialized, such as a string, integer, boolean, or custom object.

For example, to pass a string value from the MainActivity to the SecondActivity, we can use the following code:

Once we have added extra data to the intent, we can start the destination activity using the startActivity() method. The startActivity() method takes the intent object as an argument and starts the activity specified by the intent.
Now go to MainActivit.java class and code it as below:

package com.panrum.passingdatasecondactivity;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btnNext;
        btnNext=findViewById(R.id.btnNext);
        btnNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent myIntent;
                myIntent=new Intent(MainActivity.this,SecondActivity.class);
                String message = "Hello, SecondActivity!"; myIntent.putExtra("message_key", message);
                startActivity(myIntent);

            }
        });
       
    }
}

Look here, When the SecondActivity is started, it can retrieve the extra data passed from the MainActivity using the getIntent() method. The getIntent() method returns the intent that started the activity.

For example, to retrieve the string value passed from the MainActivity, we can use the following code in the SecondActivity:

package com.panrum.passingdatasecondactivity;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Intent intent = getIntent();
        String message = intent.getStringExtra("message_key");
        Toast.makeText(getApplicationContext(),message,Toast.LENGTH_LONG).show();
    }
}

Examples

Now we will give you some more examples of passing data from one activity to another using intent method in Android. Try them yourself.

Passing a string value from MainActivity to SecondActivity:

In MainActivity:

String message = "Hello from MainActivity!";
Intent myintent = new Intent(MainActivity.this, SecondActivity.class); 
myintent.putExtra("MESSAGE", message);
startActivity(myintent); 

In SecondActivity:

Intent intent = getIntent(); 
String message = intent.getStringExtra("MESSAGE"); 

Passing an integer value from MainActivity to SecondActivity:

In MainActivity:

int value = 123;
Intent myintent = new Intent(MainActivity.this, SecondActivity.class);
myintent.putExtra("VALUE", value);
startActivity(myintent); 

In SecondActivity:

Intent intent = getIntent();
int value = intent.getIntExtra("VALUE", 0); 

Passing an object from MainActivity to SecondActivity using Parcelable:

Assuming you have a custom class named Person that implements the Parcelable interface:

Person person = new Person("Khalil ur Rahman", "Atiq ur Rahman");
Intent myintent = new Intent(MainActivity.this, SecondActivity.class);
myintent.putExtra("PERSON", person);
startActivity(myintent); 

In SecondActivity:

Intent intent = getIntent();
Person person = intent.getParcelableExtra("PERSON"); 

Passing data using Using Global Variables

Using global variables to pass data between activities in Android is generally not recommended as it can lead to unexpected behavior and bugs. It’s better to use the Intent method or other recommended ways of data sharing such as a database or SharedPreferences.

However, if you still want to use global variables to pass data between activities, here’s an example.

Creating a global variable in MainActivity to store a string value:

public class MainActivity extends AppCompatActivity
{
public static String message = "Hello from MainActivity!";
 // ...
} 

Accessing the global variable from SecondActivity:

public class SecondActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
String message = MainActivity.message;
// ...
} 
} 

Again, using global variables to pass data between activities is not recommended as it can lead to unexpected behavior and bugs. It’s better to use the Intent method or other recommended ways of data sharing such as a database or SharedPreferences.

passing data using Database sharing

Creating a database and inserting data in MainActivity:
Assuming you have a database helper class named MyDatabaseHelper:

public class MainActivity extends AppCompatActivity
{
private MyDatabaseHelper dbHelper;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new MyDatabaseHelper(this);
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("message", "Hello from MainActivity!");
db.insert("messages", null, values);
}
} 

2. Retrieving data from the database in SecondActivity:

public class SecondActivity extends AppCompatActivity
{ 
private MyDatabaseHelper dbHelper; 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_second); 
dbHelper = new MyDatabaseHelper(this); 
SQLiteDatabase db = dbHelper.getReadableDatabase(); 
String[] projection = {"message"}; 
Cursor cursor = db.query("messages", projection, null, null, null, null, null);
if (cursor.moveToNext())
{ 
String message = cursor.getString(cursor.getColumnIndexOrThrow("message"));
// do something with message 
} 
cursor.close();
} 
} 

passing data Using SharedPreferences

Storing a string value in SharedPreferences in MainActivity:

public class MainActivity extends AppCompatActivity
{
private SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sharedPreferences = getSharedPreferences("my_prefs", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("message", "Hello from MainActivity!");
editor.apply();
}
} 

Retrieving the string value from SharedPreferences in SecondActivity:

public class SecondActivity extends AppCompatActivity
{
private SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
sharedPreferences = getSharedPreferences("my_prefs", MODE_PRIVATE);
String message = sharedPreferences.getString("message", "");
// do something with message 
} 
} 

Related Links

When developing Android applications, it is often necessary to pass data between different activities. One way to achieve this is by using a Bundle object. Bundles are used to store and pass data between different components of an application. In Android, an ArrayList can be passed between activities using a Bundle object. A Bundle is a container that holds data and can be used to transfer data between activities. Let’s explain how to pass array of person from one activity to another through a Bundle in Java. In Android development, it is often necessary to pass data between different components of an application. A Splash Screen is a graphical element that is displayed when an Android application is launched. It typically shows the app’s logo or branding and is usually displayed for a few seconds before the main activity of the app is displayed.

Conclusion:

Conclusion

In the dynamic landscape of Android app development, mastering the technique of Passing Data is essential for creating versatile and user-centric applications. While Intents have traditionally been the go-to method for data transmission between different app components, the integration of Bundles offers a streamlined and efficient approach that enhances code readability and scalability.

Throughout this guide, we’ve explored the significance of Passing Data in Android Studio and how it revolutionizes the way developers manage information flow within their applications. Although Intents have served as the conventional choice, Bundles provide a more organized and flexible mechanism for data exchange. By encapsulating data into a single entity, developers can mitigate data loss and maintain data integrity, even across complex interactions.

Passing Data via Bundles extends beyond mere technicalities; it’s about delivering seamless user experiences. By tailoring information transfer to the exact requirements of each context, developers can optimize their apps for responsiveness and user engagement. This method enables apps to cater to various scenarios without compromising performance or security.

Furthermore, Passing Data aligns with the principles of modular programming. Bundles allow developers to encapsulate related data, resulting in code that’s easier to manage, debug, and maintain. The ability to pass not just primitive types but also complex objects ensures that apps can handle diverse data types, from basic input to intricate configuration settings.

Incorporating Navigation Architecture Component further elevates the art of Passing Data. By enabling the attachment of data to navigation operations, developers can seamlessly guide users through different app destinations while ensuring the required data is readily available. This approach simplifies user journeys and reduces the need for redundant data retrieval.

As you embark on your journey of Android app creation, remember that Passing Data is a skill that can set your applications apart. The choice between Intents and Bundles isn’t a binary one; rather, it’s about selecting the right tool for each scenario. With this knowledge, you’re equipped to create apps that efficiently manage data, engage users, and deliver exceptional performance. So, dive into the realm of Passing Data and craft apps that stand out in the competitive Android landscape.

Q: 1. What is Passing Data in Android Studio?

A: Passing Data largely refers to the process of transferring information between various components of an Android application. It allows seamless communication and exchange of data, enhancing the functionality and user experience.

Q: 2. Why is Passing Data important in app development?

A: Passing Data is crucial as it enables different parts of an app to share information. This facilitates dynamic interactions and ensures that users can smoothly navigate through the app while maintaining the context.

Q: 3. How is Passing Data different from using Intents?

A: While both Passing Data and Intents serve the purpose of data transmission, Passing Data offers a more flexible approach. It involves using Bundles to encapsulate data, making it more organized and efficient.

Q: 4. Can I transfer complex objects using Passing Data?

A: Yes, Passing Data largely allows the transfer of complex objects between components. By using Bundles, you can package and send intricate data structures seamlessly.

Q: 5. What types of data can I pass using Passing Data?

A: Passing Data supports various data types, including primitive ones like strings and integers, as well as complex data types through proper serialization.

Q: 6. How do I pass data between activities using Passing Data?

A: To pass data between activities, you can create a Bundle and add data to it. Then, attach the Bundle to an Intent and send it to the target activity.

Q: 7. Is Passing Data secure for sensitive information?

A: Passing Data largely is secure, especially when using Bundles. However, for sensitive data, it’s recommended to encrypt the information before sending it to ensure additional security.

Q: 8. Can I pass data between fragments using Passing Data?

A: Absolutely! Passing Data is particularly useful when sharing data between fragments within the same activity. Bundles can be attached to fragment transactions for seamless data exchange.

Q: 9. How does Passing Data enhance app performance?

A: Passing Data improves app performance by enabling efficient data transfer. Using Bundles ensures that only relevant data is transmitted, reducing overhead and optimizing communication.

Q: 10. Are there any limitations to Passing Data using Bundles?

A: While Passing Data is a powerful technique, it’s important to note that Bundles have size limitations. Excessive data in a single Bundle might affect app performance, so it’s recommended to manage data appropriately.

More Links

For guidance on initiating a fresh project in Android Studio, please consult the instructions titled “Creating a New Project in Android Studio. Android employs intents along with their corresponding extras to enable users to effortlessly and swiftly share information through their preferred applications. In this instructional guide, we will cover two fundamental aspects: transferring data between activities and incorporating a back arrow. This tutorial will educate you on the process of data transfer between Android activities, both with and without the utilization of intents.