সিরিয়ালাইজেশন ব্যবহার করে আমরা দুটি Activity-র মধ্যে অবজেক্টের স্টেট বা অ্যারে পাস করতে পারি। কোডে যাওয়ার আগে, আমাদের সিরিয়ালাইজেশন সম্পর্কে জানা দরকার এবং এটি Android-এ Intent-এর সাথে কীভাবে কাজ করে।
সিরিয়ালাইজেশন একটি মার্কার ইন্টারফেস। এর মাধ্যমে আমরা একটি অবজেক্টের স্টেটকে বাইট স্ট্রিমে রূপান্তর করতে পারি। বাইট স্ট্রিম প্ল্যাটফর্ম-স্বাধীন, তাই এটি JVM এবং অন্যান্য প্ল্যাটফর্মে কাজ করে। নিচে দুটি Activity-র মধ্যে অবজেক্ট পাঠানোর উদাহরণ দেওয়া হলো।
ধাপ ১: নতুন প্রজেক্ট তৈরি করুন
Android Studio-তে File → New Project-এ যান এবং প্রয়োজনীয় বিবরণ পূরণ করে একটি নতুন প্রজেক্ট তৈরি করুন।
ধাপ ২: লেআউট ফাইল সংশোধন (res/layout/activity_main.xml)
<?xml version = "1.0" encoding = "utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android = "https://schemas.android.com/apk/res/android"
xmlns:tools = "https://schemas.android.com/tools"
android:layout_width = "match_parent"
android:layout_height = "match_parent">
<LinearLayout
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:gravity = "center_horizontal"
android:orientation = "vertical">
<EditText
android:id = "@+id/name"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:ems = "10"
android:hint = "নাম লিখুন"
android:inputType = "text" />
<EditText
android:id = "@+id/phone"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:ems = "10"
android:hint = "ফোন নম্বর লিখুন"
android:inputType = "number"/>
<Button
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "ডেটা পাঠান"
android:id = "@+id/send"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
ধাপ ৩: MainActivity.java ফাইল
import android.content.Intent;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
EditText name;
EditText phone;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name = findViewById(R.id.name);
phone = findViewById(R.id.phone);
Button send = findViewById(R.id.send);
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (TextUtils.isEmpty(name.getText().toString()) && TextUtils.isEmpty(phone.getText().toString())) {
Toast.makeText(MainActivity.this, "কিছু ভুল হয়েছে, দয়া করে চেক করুন", Toast.LENGTH_LONG).show();
} else {
sendUserData(name.getText().toString(), phone.getText().toString());
}
}
});
}
private void sendUserData(String username, String userPhone) {
Userinfo userinfo = new Userinfo();
userinfo.setName(username);
userinfo.setPhone(userPhone);
Intent send = new Intent(MainActivity.this, SecondActivity.class);
Bundle b = new Bundle();
b.putSerializable("serializable", userinfo);
send.putExtras(b);
startActivity(send);
}
}
ধাপ ৪: SecondActivity.java ফাইল
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class SecondActivity extends AppCompatActivity {
Userinfo userinfo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
TextView data = findViewById(R.id.data);
userinfo = (Userinfo) getIntent().getSerializableExtra("serializable");
String name = userinfo.getName();
String phone = userinfo.getPhone();
data.setText("আপনার লিখা নাম: " + name + " নম্বর: " + phone);
}
@Override
protected void onPause() {
super.onPause();
userinfo = null;
}
}
ধাপ ৫: Serializable Userinfo ক্লাস
Userinfo অবজেক্টকে সিরিয়ালাইজেবল করার জন্য java.io.Serializable ইন্টারফেস ইমপ্লিমেন্ট করতে হবে:
import java.io.Serializable;
class Userinfo implements Serializable {
String name;
String phone;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
অ্যাপ্লিকেশন চালান
আপনার Android ডিভাইস কম্পিউটারের সাথে সংযুক্ত আছে অনুমান করে। Android Studio-তে প্রজেক্টের যেকোনো Activity ফাইল খুলে টুলবার থেকে Run আইকনে ক্লিক করুন। আপনার মোবাইল ডিভাইস সিলেক্ট করুন এবং ডিফল্ট স্ক্রিন দেখুন।


এখন "ডেটা পাঠান" বাটনে ক্লিক করুন, এটি আপনাকে SecondActivity-তে নিয়ে যাবে:

উপরোক্ত আউটপুটে, আমরা MainActivity থেকে SecondActivity-এ তথ্য পেয়েছি।