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

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

onBackPressed() ওভাররাইড করে ব্যাক বাটন ডিজেবল করা

লগআউট বা নির্দিষ্ট স্ক্রিনে ব্যাক বাটন প্রেস করলে অ্যাপ বন্ধ না হয়ে কাস্টম অ্যাকশন (যেমন টোস্ট, ডায়ালগ, কিছুই না) করার পদ্ধতি।

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

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

ধাপ ২: লেআউট (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:orientation="vertical"
    android:padding="16dp"
    android:gravity="center"
    tools:context=".MainActivity">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Press Back Button to Test" />
</LinearLayout>

ধাপ ৩: MainActivity.java

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);
    }

    @Override
    public void onBackPressed() {
        // super.onBackPressed(); // এটা কল করলে ডিফল্ট ব্যাক আচরণ হবে (ফিনিশ)
        
        // কাস্টম লজিক এখানে লিখুন
        Toast.makeText(this, "Back button disabled", Toast.LENGTH_SHORT).show();
        
        // অপশনাল: ডায়ালগ দেখিয়ে কনফার্ম করুন
        /*
        new AlertDialog.Builder(this)
            .setTitle("Exit App")
            .setMessage("Are you sure you want to exit?")
            .setPositiveButton("Yes", (dialog, which) -> 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.disableback">
    <application ...>
        <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>

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

নতুন API ব্যবহার করে আরও লচิลা কন্ট্রোল:

import androidx.activity.OnBackPressedCallback;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    // কোলব্যাক রেজিস্টার করুন
    OnBackPressedCallback callback = new OnBackPressedCallback(true) {
        @Override
        public void handleOnBackPressed() {
            // ব্যাক প্রেস হ্যান্ডল করুন
            Toast.makeText(MainActivity.this, "Custom back handling", Toast.LENGTH_SHORT).show();
        }
    };
    getOnBackPressedDispatcher().addCallback(this, callback);
    
    // ডাইনামিক্যালি এনেবল/ডিজেবল
    // callback.setEnabled(false); // ডিজেবল
    // callback.setEnabled(true);  // এনেবল
}

লগআউট সিনেরিওর জন্য প্যাটার্ন

private boolean isLoggedIn = true;

@Override
public void onBackPressed() {
    if (isLoggedIn) {
        // লগইন থাকলে সাধারণ ব্যাক বা কনফার্মেশন
        showLogoutConfirmation();
    } else {
        // লগআউট থাকলে অ্যাপ এক্সিট বা হোম স্ক্রিনে
        super.onBackPressed(); // বা moveTaskToBack(true);
    }
}

private void showLogoutConfirmation() {
    new AlertDialog.Builder(this)
        .setTitle("Logout")
        .setMessage("Do you want to logout?")
        .setPositiveButton("Yes", (d, w) -> {
            isLoggedIn = false;
            // লগআউট লজিক
            Toast.makeText(this, "Logged out", Toast.LENGTH_SHORT).show();
        })
        .setNegativeButton("No", null)
        .show();
}

সতর্কতা

  • ব্যাক বাটন ডিজেবল করা UX-এ খারাপ অনুভূতি দিতে পারে - কনফার্মেশন ডায়ালগ ব্যবহার করুন
  • Android 12+ (API 31)-ে সিস্টেম ব্যাক জেসচারও এই কোলব্যাক পেতে পারে
  • রুট এক্টিভিটিতে finish() কল না করলে অ্যাপ বэкগ্রাউন্ডে যাবে, বন্ধ হবে না
  1. অ্যান্ড্রয়েডে বাটনের কোণাবৃত্তাকার কর্নার তৈরি করার পদ্ধতি

  2. অ্যান্ড্রয়েডে ScrollView প্রোগ্রাম্যাটিক্যালি ডিজেবল করার পদ্ধতি

  3. Android অ্যাপ্লিকেশন ব্যাকগ্রাউন্ডে চলছে কিনা তা যাচাই করার পদ্ধতি

  4. Android ডিভাইসের GPS সক্রিয় আছে কিনা যাচাই করা