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

অ্যান্ড্রয়েডে ফ্র্যাগমেন্টের মাঝপথে ডেটা পাস করার পদ্ধতি

ফ্র্যাগমেন্টের মধ্যে ডেটা আদান-প্রদান

এই উদাহরণে দেখানো হয়েছে কীভাবে একটি ফ্র্যাগমেন্ট থেকে অন্য ফ্র্যাগমেন্টে ডেটা পাস করা যায় অ্যান্ড্রয়েডে।

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

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

দ্বিতীয় ধাপ: মূল লেআউটে দুটি ফ্র্যাগমেন্ট যোগ করুন

res/layout/activity_main.xml:

<RelativeLayout 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"
    android:background="#574706"
    tools:context=".MainActivity">
    <fragment
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:name="app.com.sample.FragmentOne"
        android:id="@+id/fragment"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        tools:layout="@layout/fragment_fragment_one" />
    <fragment
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:name="app.com.sample.FragmentTwo"
        android:id="@+id/fragment2"
        android:layout_below="@+id/fragment"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="41dp"
        tools:layout="@layout/fragment_fragment_two" />
</RelativeLayout>

তৃতীয় ধাপ: মেইন এক্টিভিটি - ইন্টারফেস ইমপ্লিমেন্ট করুন

src/MainActivity.java - এখানে OnFragmentInteractionListener ইমপ্লিমেন্ট করা হয়েছে:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends AppCompatActivity implements FragmentOne.OnFragmentInteractionListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.textUpdate) return true;
        return super.onOptionsItemSelected(item);
    }
    
    // ফ্র্যাগমেন্ট वन থেকে ডেটা গ্রহণ করে ফ্র্যাগমেন্ট টু-তে পাঠানো
    @Override
    public void onFragmentInteraction(String userContent) {
        FragmentTwo fragmentTwo = (FragmentTwo) getSupportFragmentManager().findFragmentById(R.id.fragment2);
        fragmentTwo.updateTextField(userContent);
    }
}

চতুর্থ ধাপ: দুটি ফ্র্যাগমেন্ট তৈরি করুন

ক) FragmentOne.java

ইনপুট নেয় এবং ইন্টারফেসের মাধ্যমে ডেটা পাঠায়:

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class FragmentOne extends Fragment {
    private OnFragmentInteractionListener mListener;
    private EditText userInput;
    private String userData;
    
    public FragmentOne() {}
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_fragment_one, container, false);
        userInput = view.findViewById(R.id.userInput);
        Button update = view.findViewById(R.id.button);
        
        update.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (userInput.getText().toString().equals("")) {
                    Toast.makeText(getActivity(), "User input value must be filled", Toast.LENGTH_LONG).show();
                    return;
                }
                userData = userInput.getText().toString();
                onButtonPressed(userData);
            }
        });
        return view;
    }
    
    public void onButtonPressed(String userContent) {
        if (mListener != null) {
            mListener.onFragmentInteraction(userContent);
        }
    }
    
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            mListener = (OnFragmentInteractionListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString() + " must implement OnFragmentInteractionListener");
        }
    }
    
    @Override
    public void onDetach() {
        super.onDetach();
        mListener = null;
    }
    
    public interface OnFragmentInteractionListener {
        void onFragmentInteraction(String userContent);
    }
}

খ) fragment_fragment_one.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="4dp"
    android:paddingBottom="32dp">
    <EditText
        android:id="@+id/userInput"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="16dp"
        android:ems="10"
        android:inputType="text">
        <requestFocus />
    </EditText>
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/userInput"
        android:layout_marginTop="20dp"
        android:padding="16dp"
        android:elevation="4dp"
        android:text="Update" />
</RelativeLayout>

গ) FragmentTwo.java

ডেটা গ্রহণ করে টেক্সটভিউতে দেখায়:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class FragmentTwo extends Fragment {
    private TextView updateText;
    
    public FragmentTwo() {}
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_fragment_two, container, false);
        updateText = view.findViewById(R.id.textUpdate);
        return view;
    }
    
    public void updateTextField(String newText) {
        updateText.setText(newText);
    }
}

ঘ) fragment_fragment_two.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/textUpdate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:textSize="24sp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textStyle="bold"
        android:layout_marginTop="32dp" />
</RelativeLayout>

পঞ্চম ধাপ: ম্যানিফেস্ট ফাইল

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

অ্যাপ্লিকেশন চালান

প্রথম ফ্র্যাগমেন্টে টেক্সট লিখে Update বাটনে ক্লিক করলে দ্বিতীয় ফ্র্যাগমেন্টে টেক্সটটি দেখাবে।

অ্যান্ড্রয়েডে ফ্র্যাগমেন্টের মাঝপথে ডেটা পাস করার পদ্ধতি অ্যান্ড্রয়েডে ফ্র্যাগমেন্টের মাঝপথে ডেটা পাস করার পদ্ধতি

  1. অ্যান্ড্রয়েডে ফ্র্যাগমেন্টের মাঝপথে ডেটা পাস করার পদ্ধতি

  2. অ্যান্ড্রয়েডে লাইন আঁকা (Canvas এবং Paint ব্যবহার করে)

  3. অ্যান্ড্রয়েডে এক্টিভিটির মাঝপথে Drawable পাস করা

  4. অ্যান্ড্রয়েডে এক্টিভিটির থেকে ফ্র্যাগমেন্টে ভেরিয়েবল পাস করার পদ্ধতি