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

অ্যান্ড্রয়েডে ফ্র্যাগমেন্ট থেকে এক্টিভিটি মেথড কল করা

ফ্র্যাগমেন্ট থেকে হোস্ট এক্টিভিটির পাবলিক মেথড কল করার পদ্ধতি

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

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

Android Studio-তে File → New Project নির্বাচন করুন।

ধাপ ২: লেআউট (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<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:padding="8dp"
    tools:context=".MainActivity">

    <FrameLayout
        android:id="@+id/frameLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

ধাপ ৩: মেইন এক্টিভিটি (src/MainActivity.java)

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.frameLayout, new SampleFragment()).commit();
    }

    // ফ্র্যাগমেন্ট থেকে কল হবে এই মেথড
    public void FragmentMethod() {
        Toast.makeText(MainActivity.this, "Method called From Fragment", Toast.LENGTH_LONG).show();
    }
}

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

SampleFragment.java

import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class SampleFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_sample, container, false);
        // হোস্ট এক্টিভিটিতে কাস্ট করে মেথড কল
        ((MainActivity) getActivity()).FragmentMethod();
        return view;
    }
}

fragment_sample.xml

<?xml version="1.0" encoding="utf-8"?>
<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"
    tools:context=".SampleFragment">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Calling a simple method from Fragment"
        android:textAlignment="center"
        android:textSize="24sp"
        android:textStyle="bold" />

</RelativeLayout>

ধাপ ৫: মেনিফেস্ট (androidManifest.xml)

<?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>

সেরা অনুশীলন (Best Practice)

টাইট কাপলিং এড়াতে ইন্টারফেস (Interface) ব্যবহার করুন:

// ইন্টারফেস ডিফাইন করুন
public interface OnFragmentInteractionListener {
    void onFragmentMethodCall();
}

// এক্টিভিটিতে ইমপ্লিমেন্ট করুন
public class MainActivity extends AppCompatActivity implements OnFragmentInteractionListener {
    @Override
    public void onFragmentMethodCall() { ... }
}

// ফ্র্যাগমেন্টে লিসেনার সেট করুন
@Override
public void onAttach(Context context) {
    super.onAttach(context);
    if (context instanceof OnFragmentInteractionListener) {
        listener = (OnFragmentInteractionListener) context;
    }
}

// কল করুন
listener.onFragmentMethodCall();

ফলাফল

অ্যাপ্লিকেশন চালু होते ही ফ্র্যাগমেন্ট লোড হবে এবং টোস্ট মেসেজ "Method called From Fragment" দেখাবে।

অ্যান্ড্রয়েডে ফ্র্যাগমেন্ট থেকে এক্টিভিটি মেথড কল করা

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

  2. Android অ্যাপে URL থেকে Bitmap লোড করার পদ্ধতি

  3. Android-এ নির্দিষ্ট সময় পর মেথড কল করার পদ্ধতি

  4. অ্যান্ড্রয়েডে গুগলকে অ্যাপ এক্টিভিটি রেকর্ড করার থেকে রোধ করা