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

مدیریت دکمه ی Back در اندروید
در اندروید به صورت پیشفرض هنگامی که کاربر بر روی دکمه ی Back کلیک میکند برنامه به اکتیویتی قبلی خود بر میگردد، گاهی برنامه نویسان میخواهند این روال کلیشه ای را بشکنند و هنگامی که کاربر بر روی دکمه ی Back کلیک کرد به کاربر پیغامی نشان بدهند، مثلا یک Toast نمایش بدهند و به کاربر بگویند اگر قصد خروج از برنامه را دارید 2 بار روی دکمه ی Back کلیک کنید یا حتی از کاربر سوال بپرسند آیا واقعا میخواهید برنامه را ترک کنید ؟
خرید شارژ ایرانسل
خرید شارژ ایرانسل، همراه اول، رایتل | خرید بسته های اینترنت ایرانسل | etore.ir
دانلود بازی اندروید
اندروید سیتی | بررسی و دانلود آخرین های اندروید
خرید سرور مجازی
ارائه سرور مجازی SSD NVMe برای اولین بار در ایران ؛ نهایت سرعت را تجربه کنید.
خودتان را اینجا معرفی کنید

برای این کار کافیست متد
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 فعالیتش رو شروع کرد، در حال حاضر در زمینه ی برنامه نویسی تحت وب و اندروید و شبکه های ارتباطی سیسکو فعالیت میکنه .

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

ارسال پاسخ mehmet
mehmet
یکشنبه ۱۳ تیر ۱۳۹۵ ۰۰:۳۲
دقیقا همین پروژه رو نوشتم اما کار نمیکنه!!!!
اصلا alert dialog نمیاره!!!