آموزش اندروید استودیوآموزش های برنامه نویسی اندروید
آموزش برنامه نویسی اندروید با اندروید استودیو (بخش سی و دوم: برنامه نویسی دکمه بازگشت BackButton در اندروید)
در این قسمت از آموزش برنامه نویسی اندروید، می خواهیم کمی با دکمه بازگشت در اپلیکیشن های اندروید کار کنیم.
قبل از این آموزش اگر با AlertDialog آشنایی ندارید حتما بخش بیستم از سری آموزش های اندروید استودیو را مشاهده کنید.
بعضی مواقع احتیاج داریم که کاربر هنگامی که می خواهد از برنامه خارج شود، با پیغام هشداری به وی، مطمئن شویم که آیا واقعا قصد خروج از اپلیکیشن را دارد یا خیر؟
این موضوع در برنامه های بسیاری از پلتفرم ها دیده می شود. بیشتر به این دلیل وجود دارد که ممکن است کاربر بر اثر اشتباه دستش به دکمه بازگشت خورده باشد.
پس بهتر است در برنامه ی اندرویدی خود، حتما در قسمت هایی که لازم است این ویژگی وجود داشته باشد.
من یک پروژه به نام BackButton-Gsm ایجاد می کنم.
حال سراغ فایل MainActivity.java می رویم.
در این قسمت قرار است کدهایی بنویسیم تا وقتی کاربر بر روی دکمه کلیک کند با استفاده از AlertDialog به وی هشدار داده شود که آیا واقعا قصد خروج از برنامه را دارد؟
سپس با توجه به تصمیم وی برای ماندن یا خروج که با استفاده از زدن کاربر بر روی دکمه … انجام می گیرد، در اپلیکیشن تصمیم مناسب اتخاذ می شود.
تابعی به نام onBackPressed در قسمت جاوای برنامه، نقش این را دارد تا هر وقت که بر روی دکمه بازگشت کلیک شد، کدهایی که داخل آن وجود دارد اجرا شوند.
پس در قدم اول، تابع onBackPressed را می نویسیم و خودمان تابع دیگری در دل آن نوشته تا رویدادهایی که می خواهیم را در آن تابع بنویسیم. ما از اسم backButtonEvent استفاده کرده ایم.
public void onBackPressed() { // تابعی که خودمان نوشتیم تا در هنگام کلیک بر روی دکمه بازگشت این تابع فراخوانی شود backButtonEvent(); return; }
در قسمت بعدی شروع به تعریف تابع backButtonEvent می کنیم.
در داخل این تابع، ابتدا کد AlertDialog را تعریف می کنیم و نام متغیر آن را hoshdar می گذاریم.
AlertDialog.Builder hoshdar = new AlertDialog.Builder(MainActivity.this);
سپس عنوان و نوشته ی این پیغام هشدار را تعریف می نماییم.
hoshdar.setTitle("هشدار"); hoshdar.setMessage("آیا قصد خروج از برنامه را دارید؟");
اگر از بخش AlertDialog به یاد داشته باشید هر هشداری یک حالت مثبت و منفی دارد که با زدن دکمه بله حالت مثبت فراخوانی شده و با زدن دکمه خیر حالت منفی فراخوانی می شود
خب ابتدا کد های حالت مثبت AlertDialog را می نویسیم:
hoshdar.setPositiveButton("بله",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // اتمام برنامه finish(); } });
کدهای حالت منفی AlertDialog:
hoshdar.setNegativeButton("خیر",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // کنسل کردن هشدار یا به عبارتی ماندن در برنامه dialog.cancel(); } });
کد backButtonEvent
public void backButtonEvent() { AlertDialog.Builder hoshdar = new AlertDialog.Builder(MainActivity.this); hoshdar.setTitle("هشدار"); hoshdar.setMessage("آیا قصد خروج از برنامه را دارید؟"); hoshdar.setPositiveButton("بله",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { finish(); } }); hoshdar.setNegativeButton("خیر",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); hoshdar.show(); }
یادتان باشد که در آخر با استفاده از کد زیر، به اپلیکیشین می گویید که دیالوگ شما را نشان دهد. در واقع برای فراخوانی و نشان داده شدن AlertDialog در انتها کد dialog.show را نوشته تا پس از اجرای کدهای قبلی و پیکربندی AlertDialog، دیالوگ آن به کاربر نمایش داده شود.
برای راحتی کار شما، کد کامل MainActivity.java نیز در اینجا آورده شده است.
کد کامل MainActivity
package com.gsm_developers.backbutton_gsm; import android.content.DialogInterface; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onBackPressed() { backButtonEvent(); return; } public void backButtonEvent() { AlertDialog.Builder hoshdar = new AlertDialog.Builder(MainActivity.this); hoshdar.setTitle("هشدار"); hoshdar.setMessage("آیا قصد خروج از برنامه را دارید؟"); hoshdar.setPositiveButton("بله",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { finish(); } }); hoshdar.setNegativeButton("خیر",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); hoshdar.show(); } }