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

অ্যান্ড্রয়েড এক্টিভিটিতে ব্যাক বাটন হ্যান্ডল করার পদ্ধতি

এই টিউটোরিয়ালে আমরা শিখব কীভাবে অ্যান্ড্রয়েড এক্টিভিটিতে ব্যাক বাটন প্রেস হ্যান্ডল করতে হয়, যার মধ্যে বাটন ক্লিক করে এক্টিভিটি ফিনিশ করা এবং `onBackPressed()` ওভাররাইড করা অন্তর্ভুক্ত।

প্রয়োজনীয় ধাপগুলো

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

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:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    tools:context="MainActivity">
    <TextView
        android:text="My Activity"
        android:textSize="30sp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginVertical="25sp"
        android:layout_margin="23dp" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Back to close the activity"
        android:id="@+id/button"
        android:layout_centerVertical="true"
        android:layout_margin="23dp" />
</RelativeLayout>

ধাপ ৩: মেইন এক্টিভিটিতে বাটন ক্লিক লিসেনার বাস্তবায়ন করুন

src/MainActivity.java ফাইলে নিচের কোড যোগ করুন:

package app.com.sample;

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    Button button;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish(); // এক্টিভিটি ফিনিশ করুন
            }
        });
    }
}

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

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>

সিস্টেম ব্যাক বাটন হ্যান্ডলিং (onBackPressed)

ডিভাইসের হার্ডওয়ার/সফটওয়ার ব্যাক বাটন প্রেস হলে:

@Override
public void onBackPressed() {
    // কাস্টম লজিক (যেমন: কনফার্মেশন ডায়লগ)
    new AlertDialog.Builder(this)
        .setMessage("আপনি কি বের होना চান?")
        .setPositiveButton("হ্যাঁ", (dialog, which) -> finish())
        .setNegativeButton("না", null)
        .show();
    
    // super.onBackPressed(); // ডিফল্ট আচরণ (ফিনিশ) কল করুন যদি চান
}

আধুনিক পদ্ধতি: OnBackPressedDispatcher (API 33+ / Activity 1.2.0+)

`onBackPressed()` ডিপ্রিকেটেড। নতুন পদ্ধতিঃ

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    // ক্যালব্যাক রেজিস্টার করুন
    OnBackPressedCallback callback = new OnBackPressedCallback(true) {
        @Override
        public void handleOnBackPressed() {
            // কাস্টম লজিক
            if (canGoBack()) {
                goBack();
            } else {
                finish();
            }
        }
    };
    getOnBackPressedDispatcher().addCallback(this, callback);
}

// ইনহেরিট করা ক্লাসে (Fragment-এ):
requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), callback);

Predictive Back Gesture (Android 14+/API 34+)

সিস্টেম ব্যাক জেসচারের অ্যানিমেশন প——

// styles.xml
<style name="AppTheme" parent="Theme.MaterialComponents.Light">
    <item name="android:enableOnBackInvokedCallback">true</item>
</style>

// Manifest-এ:
<application android:enableOnBackInvokedCallback="true" ...>

.Fragment-এ ব্যাক হ্যান্ডলিং

// Fragment-এ (Activity 1.2.0+)
requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), 
    new OnBackPressedCallback(true) {
        @Override
        public void handleOnBackPressed() {
            if (webView.canGoBack()) {
                webView.goBack();
            } else {
                requireActivity().finish();
            }
        }
    });

সারাংশ

  • বাটন ক্লিক করে ফিনিশ: finish()
  • সিস্টেম ব্যাক বাটন: onBackPressed() ওভাররাইড করুন (লিগেসি)
  • আধুনিক: OnBackPressedDispatcher + OnBackPressedCallback ব্যবহার করুন
  • Android 14+: Predictive Back সাপোর্টের জন্য `enableOnBackInvokedCallback=true` সেট করুন
  1. অ্যান্ড্রয়েডে Activity.finish() কীভাবে কাজ করে

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

  3. অ্যান্ড্রয়েডে ডাইনামিক্যালি বাটন যোগ করা

  4. Android-এ সেকেন্ডারি অ্যাক্টিভিটি থেকে মেইন অ্যাক্টিভিটিতে ডেটা পাঠানোর পদ্ধতি