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

Android-এ Serializable ব্যবহার করে Activity-র মধ্যে ডেটা পাস করার পদ্ধতি


সিরিয়ালাইজেশন ব্যবহার করে আমরা দুটি 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 আইকনে ক্লিক করুন। আপনার মোবাইল ডিভাইস সিলেক্ট করুন এবং ডিফল্ট স্ক্রিন দেখুন।

Android-এ Serializable ব্যবহার করে Activity-র মধ্যে ডেটা পাস করার পদ্ধতি


Android-এ Serializable ব্যবহার করে Activity-র মধ্যে ডেটা পাস করার পদ্ধতি


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

Android-এ Serializable ব্যবহার করে Activity-র মধ্যে ডেটা পাস করার পদ্ধতি

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

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

  2. অ্যান্ড্রয়েডে এক্সবক্স গেম পাস দিয়ে গেম স্ট্রিমিং করার পদ্ধতি

  3. উবুন্টুতে ADB ব্যবহার করে অ্যান্ড্রয়েড ডেটা ব্যাকআপ लेने का উপায়

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