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

অ্যান্ড্রয়েডে বাটন ক্লিক করলে ডায়ালগ বন্ধ না হওয়া নিশ্চিত করা

AlertDialog-এ পজিটিভ বাটন ক্লিক করলে ডিসমিস না হওয়া

ডিফল্টভাবে AlertDialog-এ যেকোনো বাটন ক্লিক করলে ডায়ালগ বন্ধ হয়ে যায়। এই উদাহরণে দেখানো হয়েছে কীভাবে পজিটিভ বাটন ক্লিক করলেও ডায়ালগ খোলা রাখা যায়।

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

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

দ্বিতীয় ধাপ: লেআউট ফাইল

res/layout/activity_main.xml - খালি RelativeLayout (ডায়ালগ কোড থেকে দেখানো হবে):

<?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=".MainActivity">
</RelativeLayout>

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

src/MainActivity.java - getButton() ব্যবহার করে বাটন রেফারেন্স নিয়ে কাস্টম লিসেনার সেট করা:

import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // AlertDialog তৈরি ও দেখানো
        final AlertDialog dialog = new AlertDialog.Builder(this)
                .setTitle("My Alert Dialog")
                .setMessage("Example Message")
                .setPositiveButton("Ok", null) // null লিসেনার দিয়ে ডিফল্ট ডিসমিস বন্ধ
                .setNegativeButton("Cancel", null)
                .show();
        
        // পজিটিভ বাটন (Ok) রেফারেন্স নিয়ে কাস্টম লিসেনার সেট
        Button positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
        positiveButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "Do not dismiss", Toast.LENGTH_SHORT).show();
                // এখানে ডায়ালগ বন্ধ করবেন না - শুধু টোস্ট দেখাবে
                // প্রয়োজন হলে ম্যানুয়ালি dismiss() কল করুন:
                // dialog.dismiss();
            }
        });
    }
}

চতুর্থ ধাপ: ম্যানিফেস্ট ফাইল

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

কীভাবে কাজ করে

  1. setPositiveButton("Ok", null) - নাল লিসেনার দিয়ে ডিফল্ট ডিসমিস আচরণ বন্ধ করা হয়
  2. dialog.getButton(AlertDialog.BUTTON_POSITIVE) - ডায়ালগ দেখানোর পরেই বাটন রেফারেন্স পাওয়া যায়
  3. কাস্টম OnClickListener সেট করে নিজস্ব লজিক চালানো হয়
  4. ডায়ালগ বন্ধ করতে চাইলে ম্যানুয়ালি dialog.dismiss() কল করতে হবে

বিকল্প পদ্ধতি: DialogFragment ব্যবহার

আধুনিক অ্যান্ড্রয়েডে DialogFragment ব্যবহার করা ভালো প্র্যাকটিস:

public class CustomDialogFragment extends DialogFragment {
    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("Title").setMessage("Message")
               .setPositiveButton("OK", (dialog, which) -> {
                   // ডিফল্টভাবে ডিসমিস হবে
               });
        AlertDialog dialog = builder.create();
        dialog.show();
        // বাটন রেফারেন্স নিয়ে কাস্টম লিসেনার সেট করা যায় এখানেও
        return dialog;
    }
}

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

অ্যাপ লঞ্চ করলে ডায়ালগ দেখাবে। "Ok" বাটনে ক্লিক করলে ডায়ালগ বন্ধ হবে না, শুধু টোস্ট দেখাবে। "Cancel" বাটনে ক্লিক করলে বন্ধ হবে (নাল লিসেনারের জন্য ডিফল্ট আচরণ)।

অ্যান্ড্রয়েডে বাটন ক্লিক করলে ডায়ালগ বন্ধ না হওয়া নিশ্চিত করা

  1. অ্যান্ড্রয়েডে DatePickerDialog-এ তারিখ সেট করার পদ্ধতি

  2. অ্যান্ড্রয়েডে URL থেকে ইমেজ ডাউনলোড করার পদ্ধতি

  3. অ্যান্ড্রয়েড ডিভাইসকে স্লিপ মোডে যাওয়া থেকে রোকার পদ্ধতি

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