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

কোটলিন ব্যবহার করে অ্যান্ড্রয়েডে ব্যাক বাটন ডিজেবল করা (লগআউট সময়ে)

ওভারভিউ

এই টিউটোরিয়ালটি দেখায় কিভাবে onBackPressed() ওভাররাইড করে অ্যান্ড্রয়েড ডিভাইসের ব্যাক বাটন প্রোগ্রাম্যাটিক্যালি ডিজেবল করা যায়। এটি লগআউট স্ক্রিন, সিকিউরিটি স্ক্রিন বা উইজার্ড-স্টাইল ফ্লোতে hữu용।

পূর্বশর্ত

  • অ্যান্ড্রয়েড স্টুডিও (কোটলিন)
  • Activity লাইফসাইকেল বেসিক

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

File → New Project → Empty Activity → Language: Kotlin।

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:gravity="center"
    android:orientation="vertical"
    android:padding="16dp"
    tools:context=".MainActivity">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/your_logout_image" />

</LinearLayout>

নোট: @drawable/your_logout_image আপনার ড্রয়েবল রিসোর্স দিয়ে প্রতিস্থাপন করুন।

ধাপ ৩: MainActivity.kt

package com.example.disablebackbutton

import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    override fun onBackPressed() {
        // ডিফল্ট ব্যাক বাটন আচরণ বন্ধ (super.onBackPressed() কল না করুন)
        Toast.makeText(applicationContext, "Disabled Back Press", Toast.LENGTH_SHORT).show()
        
        // ঐচ্ছিক: লগআউট কনফার্মেশন ডায়ালগ দেখাতে পারেন
        // showLogoutConfirmationDialog()
    }
    
    // উদাহরণ: কনফার্মেশন ডায়ালগ
    /*
    private fun showLogoutConfirmationDialog() {
        AlertDialog.Builder(this)
            .setTitle("Logout")
            .setMessage("Are you sure you want to logout?")
            .setPositiveButton("Yes") { _, _ -> 
                // লগআউট লজিক এখানে
                finish() 
            }
            .setNegativeButton("No", null)
            .show()
    }
    */
}

ধাপ ৪: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.disablebackbutton">

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

চলান ও ফলাফল

অ্যাপ চালালে ব্যাক বাটন চাপলে অ্যাপ বন্ধ হবে না, বরং "Disabled Back Press" টোস্ট দেখাবে।

আধুনিক পদ্ধতি (Android 13+ / API 33+)

API 33 থেকে OnBackPressedCallback ব্যবহার করার পরামর্শ দেওয়া হয়:

import android.os.Bundle
import androidx.activity.OnBackPressedCallback
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // কোলব্যাক রেজিস্টার করুন
        onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
            override fun handleOnBackPressed() {
                Toast.makeText(this@MainActivity, "Back disabled via Callback", Toast.LENGTH_SHORT).show()
            }
        })
    }
}

এই পদ্ধতিতে লাইফসাইকেল-অ্যোয়ার (Lifecycle-aware) এবং কম্পোজবল (Composable) সাপোর্ট থাকে।

ব্যবহারের ক্ষেত্র ও সতর্কতা

  • লগআউট/সিকিউরিটি স্ক্রিন: ব্যবহারকারী অকস্মাত বেরিয়ে যাবে না।
  • মাল্টি-স্টেপ ফর্ম/উইজার্ড: পূর্বের স্টেপে ফিরে যাওয়া বাধা দিন।
  • UX সতর্কতা: ব্যাক বাটন ডিজেবল করা ইউজার এক্সপেরিয়েন্স খারাপ করতে পারে। শুধু অতिआবশ্যকেই করুন এবং ভিজ্যুয়াল হিন্ট (টুলবার ব্যাক আইকন লুকান) দিন।
  • সিস্টেম নেভিগেশন: জেসচার নেভিগেশনে (সোয়াইপ ফ্রোম এজ) এটি কাজ নাও করতে পারে।
  1. অ্যান্ড্রয়েড ডিভাইসের হোম বাটন ক্লিক নিষ্ক্রিয় করা (Disable Home Button)

  2. Android-এ লগআউট সময় ব্যাক বাটন ডিজেবল করা

  3. Android-এ Home Button ওভাররাইড/হ্যান্ডল করার পদ্ধতি

  4. অ্যান্ড্রয়েডে কোটলিন ব্যবহার করে GridView স্ক্রোলিং নিষ্ক্রিয় করার উপায়