پرسیدن اطمینان از خروج، هنگام اشاره به دکمه بازگشت (Back) ، در برنامه اندروید
حتما در برنامه های مختلف، مشاهده کرده اید که هنگامی که در activity اصلی برنامه اندروید هستیم، هنگام اشاره کاربر بر روی دکمه back ، قبل از خروج از برنامه، از کاربر سوال می شود که آیا واقعا می خواهد از برنامه خارج شود یا خیر. این مورد بسیار مهم است، زیرا ممکن است کاربر، به اشتباه، بر روی دکمه اشاره کرده باشد. این مورد تنها کاربرد اینگونه پیام ها نیست و مثلا فرض کنید که کاربر در وسط یک بازی، به اشتباه، به دکمه back اشاره کند، اگر سریعا به activity قبلی بازگردد، دوباره باید بازی را از اول شروع کند (دیوانه کننده است!). بنابراین باید قبل از خروج از activity ، از وی پرسش شود که آیا واقعا می خواهد خارج شود یا خیر. پس نتیجه می گیریم که اینگونه پیام ها، برای موارد مختلفی باید به کار رود.
کدهای زیر، یک پیام به کاربر نمایش می دهد و از وی می پرسد که آیا واقعا می خواهد از برنامه خارج شود یا خیر، اگر کاربر جوابش مثبت باشد، از برنامه خارج می شود و اگر بر روی گزینه مربوط به خیر، اشاره کند، پیام بسته شده و در همان activity (ادامه اجرای آن) باقی می ماند :
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.widget.Toast;
public class AndroidBackButtonActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Toast.makeText(getApplicationContext(),"http://www.kelidestan.com", Toast.LENGTH_LONG).show();
}
@Override
public void onBackPressed() {
//Display alert message when back button has been pressed
backButtonHandler();
return;
}
public void backButtonHandler() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(
AndroidBackButtonActivity.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.dialog_icon);
// 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();
}
}