কম্পিউটার টিউটোরিয়াল

অ্যান্ড্রয়েডে Bundle ব্যবহার করে এক্টিভিটির মাঝে ডেটা পাস করা

Bundle এবং Serializable দিয়ে জটিল ডেটা পাস করা

এই উদাহরণে দেখানো হয়েছে কিভাবে একটি কাস্টম অবজেক্ট (Userinfo) Bundle-এ প্যাক করে Intent-এর মাধ্যমে অন্য এক্টিভিটিতে পাঠানো যায়। Serializable ইন্টারফেস ব্যবহার করা হয়েছে।

ধাপ ১: প্রজেক্ট তৈরি করুন

Android Studio-তে নতুন প্রজেক্ট শুরু করুন।

ধাপ ২: প্রথম লেআউট (activity_main.xml) - ইনপুট ফর্ম

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center_horizontal"
        android:layout_margin="16dp">

        <EditText
            android:id="@+id/etName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="নাম লিখুন"
            android:inputType="text"
            android:ems="10" />

        <EditText
            android:id="@+id/etPhone"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="ফোন নম্বর"
            android:inputType="phone"
            android:ems="10" />

        <Button
            android:id="@+id/btnSend"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:text="ডেটা পাঠান" />

    </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

ধাপ ৩: দ্বিতীয় লেআউট (activity_second.xml) - প্রদর্শন

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:padding="16dp">

    <TextView
        android:id="@+id/tvData"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:gravity="center" />

</LinearLayout>

ধাপ ৪: ডেটা মডেল (Userinfo.java) - Serializable

package com.example.sample;

import java.io.Serializable;

public class Userinfo implements Serializable {
    private String name;
    private 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; }
}

ধাপ ৫: MainActivity.java - ডেটা পাঠানো

package com.example.sample;

import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    EditText etName, etPhone;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        etName = findViewById(R.id.etName);
        etPhone = findViewById(R.id.etPhone);
        Button btnSend = findViewById(R.id.btnSend);

        btnSend.setOnClickListener(v -> {
            String name = etName.getText().toString().trim();
            String phone = etPhone.getText().toString().trim();

            if (TextUtils.isEmpty(name) && TextUtils.isEmpty(phone)) {
                Toast.makeText(this, "নাম বা ফোন নম্বর লিখুন", Toast.LENGTH_LONG).show();
            } else {
                sendUserData(name, phone);
            }
        });
    }

    private void sendUserData(String name, String phone) {
        Userinfo user = new Userinfo();
        user.setName(name);
        user.setPhone(phone);

        Intent intent = new Intent(this, SecondActivity.class);
        Bundle bundle = new Bundle();
        bundle.putSerializable("user_data", user); // Serializable অবজেক্ট বান্ডলে রাখা
        intent.putExtras(bundle);
        startActivity(intent);
    }
}

ধাপ ৬: SecondActivity.java - ডেটা গ্রহণ ও প্রদর্শন

package com.example.sample;

import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;

public class SecondActivity extends AppCompatActivity {
    TextView tvData;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        tvData = findViewById(R.id.tvData);

        Userinfo user = (Userinfo) getIntent().getSerializableExtra("user_data");
        if (user != null) {
            String msg = "নাম: " + user.getName() + "\nফোন: " + user.getPhone();
            tvData.setText(msg);
        }
    }
}

টিপস: Parcelable ব্যবহার করুন (বेहতর পারফরম্যান্স)

Serializable রিফ্লেকশন ব্যবহার করে স্লো। আধুনিক অ্যান্ড্রয়েডে Parcelable বা @Parcelize (Kotlin) ব্যবহার করা উচিত।

ফলাফল

নাম ও ফোন লিখে "ডেটা পাঠান" বাটনে ট্যাপ করলে দ্বিতীয় এক্টিভিটিতে ডেটা দেখাবে।

অ্যান্ড্রয়েডে Bundle ব্যবহার করে এক্টিভিটির মাঝে ডেটা পাস করা অ্যান্ড্রয়েডে Bundle ব্যবহার করে এক্টিভিটির মাঝে ডেটা পাস করা অ্যান্ড্রয়েডে Bundle ব্যবহার করে এক্টিভিটির মাঝে ডেটা পাস করা
Bundle-এ Serializable অবজেক্ট পাস করে ডেটা ট্রান্সফার
  1. অ্যান্ড্রয়েডে এক্টিভিটির মাঝপথে Drawable পাস করা

  2. Android-এ বিভিন্ন অ্যাক্টিভিটির মধ্যে স্যুইচ করার পদ্ধতি

  3. Android-এ মোবাইল ডেটা প্রোগ্রাম্যাটিকভাবে ডিজেবল/এনেবল করা

  4. Android Data Binding 습득: সুস্পষ্ট UI ডেটা ইন্টিগ্রেশন