ওভারভিউ
এই টিউটোরিয়ালটি দেখায় কিভাবে 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 সতর্কতা: ব্যাক বাটন ডিজেবল করা ইউজার এক্সপেরিয়েন্স খারাপ করতে পারে। শুধু অতिआবশ্যকেই করুন এবং ভিজ্যুয়াল হিন্ট (টুলবার ব্যাক আইকন লুকান) দিন।
- সিস্টেম নেভিগেশন: জেসচার নেভিগেশনে (সোয়াইপ ফ্রোম এজ) এটি কাজ নাও করতে পারে।