مدیریت دکمه ی Back در اندروید

مدیریت دکمه ی Back در اندروید
در اندروید به صورت پیشفرض هنگامی که کاربر بر روی دکمه ی Back کلیک میکند برنامه به اکتیویتی قبلی خود بر میگردد، گاهی برنامه نویسان میخواهند این روال کلیشه ای را بشکنند و هنگامی که کاربر بر روی دکمه ی Back کلیک کرد به کاربر پیغامی نشان بدهند، مثلا یک Toast نمایش بدهند و به کاربر بگویند اگر قصد خروج از برنامه را دارید 2 بار روی دکمه ی Back کلیک کنید یا حتی از کاربر سوال بپرسند آیا واقعا میخواهید برنامه را ترک کنید ؟
دارالترجمه رسمی
دارالترجمه رسمی پارسیس شامل خدمات ترجمه رسمی و تخصصی در بیش از 60 زبان زنده دنیا
جای بروشور دیواری
خرید جای بروشور دیواری و رومیزی
افزونه های سئو وردپرس
بهترین افزونه های سئو وردپرس به صورت کاملا فارسی
تعمیر لوازم خانگی
تعمیر جاروبرقی، مایکروفر، بخارشوی، ظرفشویی، لباسشویی، سولاردام، کولرگازی
خودتان را اینجا معرفی کنید

برای این کار کافیست متد
onBackPressed()
را در اکتیویتی override کنیم، به همین منظور در درون اکتیویتی پس از بلاک onCreate متدی که در بالا معرفی کردیم را override میکنیم، یعنی مینویسیم :
@Override
    public void onBackPressed() {

        super.onBackPressed();
    }
بنابراین در این متد میتوانیم چیزهایی که نیاز داریم را بنویسیم، برای مثال زمانی که کاربر روی دکمه ی Back کلیک کرد یک Toast به کاربر نمایش داده میشود :
@Override
    public void onBackPressed() {

        super.onBackPressed();
    Toast.makeText(MainActivity.this, "back", Toast.LENGTH_SHORT).show();

    }
حالا اگر برنامه را اجرا کنید و در این اکتیویتی دکمه ی Back را بزنید مشاهده میکنید یک Toast نمایش داده میشود و سپس از اکتیویتی مورد نظر خارج میشوید، اگر تصمیم داشته باشید که پس از فشردن دکمه ی Back از اکتیویتی خارج نشوید، برای مثال یک alert دیالوگ نمایش بدهید لازم است خط
super.onBackPressed();
را از کد پاک کنید، با این کار با زدن دکمه ی Back فقط یک Toast نمایش داده میشود، میتوانید بجای Toast یک دیالوگ باز کنید و از کاربر بپرسید که واقعا قصد خارج شدن از برنامه ی شما را دارد یا خیر ؟
برای مثال یک دیالوگ به صورت زیر میسازیم :
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.widget.Toast;
import android.content.DialogInterface;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public void onBackPressed() {

        super.onBackPressed();
    Toast.makeText(MainActivity.this, "back", Toast.LENGTH_SHORT).show();
    //Display alert message when back button has been pressed
        backButtonHandler();
         return;
    }

public void backButtonHandler() {
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(
            MainActivity.this);
    // Setting Dialog Title
    alertDialog.setTitle("Leave application?");
    // Setting Dialog Message
    alertDialog.setMessage("Are you sure you want to leave the application?");
    // Setting Icon to Dialog
    alertDialog.setIcon(R.drawable.ic_launcher);
    // Setting Positive "Yes" Button
    alertDialog.setPositiveButton("YES",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    finish();
                }
            });
    // Setting Negative "NO" Button
    alertDialog.setNegativeButton("NO",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    // Write your code here to invoke NO event
                    dialog.cancel();
                }
            });
    // Showing Alert Message
    alertDialog.show();
}
}

نتیجه گیری

مدیریت دکمه ی Back ضمن ساده بودن عملکرد و کدنویسی، میتواند تصمیم گیری را برای کاربرانتان راحت تر کند یا حتی میتوانید به کاربرانتان مسیر خروج از برنامه را نشان دهید.

محمد یه دانشجوی فناوری اطلاعات هست که از سال 92 فعالیتش رو شروع کرد، در حال حاضر در زمینه ی برنامه نویسی تحت وب و اندروید و شبکه های ارتباطی سیسکو فعالیت میکنه .

نظرات و سوالات کاربران

ارسال پاسخ MrCode
MrCode
سه شنبه ۰۶ اردیبهشت ۱۴۰۱ ۲۲:۱۹
درود به همه علاقه مندان کدنویسی (مخصوصا اندروید خخخ)
بعضی از نظراتی که خوندم مثل اینکه دوستان برای اجرای این کد مشکل دارن ، چند تا نکته میگم اگر رعایت کنید مشکلتون حل میشه!

نکته اول کد بیرون از متد onCreate (اگر راجب متدها و متد onCreate چیزی نمیدونید اول اینو سرچ کنید و یادبگیرید ) باید نوشته شه!
نکته دوم باید کلاس رو ایمپورت کنید برای مثال وقتی که روی AlertDialog خطا میده و قرمز رنگ هست ، دکمه Alt به علاوه Enter رو بزنید و گزینه import class رو انتخاب کنید! (اگر راجب ایمپورت کردن کلاس هم چیزی نمیدونید اول اینو سرچ کنید)
نکته سوم باید ;()super.onBackPressed از اول کدها حذف بشه! این تیکه کد یعنی خروج و بقیه دستورات اجرا نمیشن ، ما میخواهیم یک دیالوگ نمایش بدیم و دکمه Yes و No داشته باشیم!

من با همین کدی که تو این صفحه مشاده میکنید و نکاتی که خدمتتون گفتم انجام دادم و نتیجه گرفتم امیدوارم شما هم مشکلتون حل شه
#مستر_کد
ارسال پاسخ ابوالفضل اکبرزاده
ابوالفضل اکبرزاده
یکشنبه ۱۳ مرداد ۱۳۹۸ ۰۹:۲۸
سلام
حاجی اشتباه کردی کد Toast رو بعد از super رویداد OnBackPressed آوردی
ارسال پاسخ mostafadaneshvar
mostafadaneshvar
سه شنبه ۲۲ فروردین ۱۳۹۶ ۱۱:۳۴
در پاسخ به دیدگاه mehmet ارسال شده در یکشنبه ۱۳ تیر ۱۳۹۵ ۰۰:۳۲
دقیقا همین پروژه رو نوشتم اما کار نمیکنه!!!!
اصلا alert dialog نمیاره!!!
Override نکن
ارسال پاسخ mehmet
mehmet
یکشنبه ۱۳ تیر ۱۳۹۵ ۰۰:۳۲
دقیقا همین پروژه رو نوشتم اما کار نمیکنه!!!!
اصلا alert dialog نمیاره!!!