مدیریت دکمه ی Back در اندروید
دارالترجمه رسمی
دارالترجمه رسمی پارسیس شامل خدمات ترجمه رسمی و تخصصی در بیش از 60 زبان زنده دنیا
دارالترجمه رسمی پارسیس شامل خدمات ترجمه رسمی و تخصصی در بیش از 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();
}
}
نظرات و سوالات کاربران
بعضی از نظراتی که خوندم مثل اینکه دوستان برای اجرای این کد مشکل دارن ، چند تا نکته میگم اگر رعایت کنید مشکلتون حل میشه!
نکته اول کد بیرون از متد onCreate (اگر راجب متدها و متد onCreate چیزی نمیدونید اول اینو سرچ کنید و یادبگیرید ) باید نوشته شه!
نکته دوم باید کلاس رو ایمپورت کنید برای مثال وقتی که روی AlertDialog خطا میده و قرمز رنگ هست ، دکمه Alt به علاوه Enter رو بزنید و گزینه import class رو انتخاب کنید! (اگر راجب ایمپورت کردن کلاس هم چیزی نمیدونید اول اینو سرچ کنید)
نکته سوم باید ;()super.onBackPressed از اول کدها حذف بشه! این تیکه کد یعنی خروج و بقیه دستورات اجرا نمیشن ، ما میخواهیم یک دیالوگ نمایش بدیم و دکمه Yes و No داشته باشیم!
من با همین کدی که تو این صفحه مشاده میکنید و نکاتی که خدمتتون گفتم انجام دادم و نتیجه گرفتم امیدوارم شما هم مشکلتون حل شه
#مستر_کد
حاجی اشتباه کردی کد Toast رو بعد از super رویداد OnBackPressed آوردی
اصلا alert dialog نمیاره!!!