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

Android-এ এক্টিভিটি বন্ধ করার আগে কনফার্মেশন ডায়ালগ দেখানোর পদ্ধতি

Android-এ এক্টিভিটি বন্ধ করার আগে কনফার্মেশন ডায়ালগ দেখানোর পদ্ধতি

এই উদাহরণটি দেখায় কিভাবে ব্যবহারকারী ব্যাক বাটন চাপলে একটি AlertDialog দেখিয়ে এক্টিভিটি বন্ধ করার অনুমতি চাওয়া যায়। এটি অকস্মাত অ্যাপ বন্ধ হওয়া থেকে রক্ষা করে এবং ব্যবহারকারীর সিদ্ধান্ত নিশ্চিত করে।

প্রয়োজনীয় ধাপসমূহ

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

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/relativeLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="ব্যাক বাটন চাপলে কনফার্মেশন ডায়ালগ দেখাবে"
        android:textAlignment="center"
        android:textSize="24sp"
        android:textStyle="bold" />

</RelativeLayout>

ধাপ ৩: MainActivity.java-এ onBackPressed() ওভাররাইড করুন

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
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);
    }

    @Override
    public void onBackPressed() {
        // AlertDialog.Builder ব্যবহার করে কনফার্মেশন ডায়ালগ তৈরি করুন
        new AlertDialog.Builder(this)
                .setIcon(android.R.drawable.ic_dialog_alert)
                .setTitle("এক্টিভিটি বন্ধ করুন")
                .setMessage("আপনি কি নিশ্চিত যে এই এক্টিভিটি বন্ধ করতে চান?")
                .setPositiveButton("হ্যাঁ", (dialog, which) -> {
                    finish(); // এক্টিভিটি বন্ধ করুন
                    Toast.makeText(MainActivity.this, "এক্টিভিটি বন্ধ হয়েছে", Toast.LENGTH_SHORT).show();
                })
                .setNegativeButton("না", null) // null দিলে ডায়ালগ শুধু বন্ধ হবে
                .show();
    }
}

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

AndroidX Activity 1.2.0+ এবং Fragment 1.3.0+ থেকে onBackPressed() ডিপ্রিকেট করা হয়েছে। নতুন পদ্ধতিতে OnBackPressedCallback ব্যবহার করুন:

import androidx.activity.OnBackPressedCallback;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
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);

        // OnBackPressedCallback রেজিস্টার করুন
        getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
            @Override
            public void handleOnBackPressed() {
                new AlertDialog.Builder(MainActivity.this)
                        .setIcon(android.R.drawable.ic_dialog_alert)
                        .setTitle("এক্টিভিটি বন্ধ করুন")
                        .setMessage("আপনি কি নিশ্চিত যে এই এক্টিভিটি বন্ধ করতে চান?")
                        .setPositiveButton("হ্যাঁ", (dialog, which) -> {
                            // কলব্যাক ডিজেবল করুন এবং ডিফল্ট বিহেভিয়ার চালু করুন
                            setEnabled(false);
                            MainActivity.super.onBackPressed();
                        })
                        .setNegativeButton("না", null)
                        .show();
            }
        });
    }
}

বিকল্প: MaterialAlertDialogBuilder (Material Components)

আধুনিক UI-এর জন্য MaterialAlertDialogBuilder ব্যবহার করুন:

import com.google.android.material.dialog.MaterialAlertDialogBuilder;

new MaterialAlertDialogBuilder(this)
        .setTitle("এক্টিভিটি বন্ধ করুন")
        .setMessage("আপনি কি নিশ্চিত যে এই এক্টিভিটি বন্ধ করতে চান?")
        .setPositiveButton("হ্যাঁ", (dialog, which) -> finish())
        .setNegativeButton("না", null)
        .show();

ধাপ ৪: 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>

অ্যাপ্লিকেশন চালানোর পদ্ধতি

আপনার Android ডিভাইস কম্পিউটারের সাথে সংযুক্ত করুন। Android Studio-তে Run আইকনে ক্লিক করুন। অ্যাপ খুললে ডিভাইসের ব্যাক বাটন চাপুন - কনফার্মেশন ডায়ালগ দেখাবে। "হ্যাঁ" চাপলে অ্যাপ বন্ধ হবে, "না" চাপলে ডায়ালগ বন্ধ হবে।

Android-এ এক্টিভিটি বন্ধ করার আগে কনফার্মেশন ডায়ালগ দেখানোর পদ্ধতি

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

  2. অ্যান্ড্রয়েডে ডায়লগের অবস্থান (Position) স্ক্রিনে পরিবর্তন করা

  3. Android ActionBar-এ মেনু আইটেম হাইড/শো করার পদ্ধতি

  4. অ্যান্ড্রয়েডে একটি অ্যাক্টিভিটি শুরু করার আগে প্রোগ্রেস ডায়ালগ কীভাবে দেখাবেন?