Normalde geri tuşunun standart kullanımı;
@Override
public void onBackPressed() {
if(webView.canGoBack()) {
webView.goBack();
} else {
super.onBackPressed();
return;
}
şeklindedir.
Burada ilk kısımdaki if koşulu; ilk(ana) sayfaya gelene kadar geri tuşuna basılabilir. 10 sayfa bile değiştirseniz ana sayfaya gelene kadar uygulamadan çıkmaz ve geri gidersiniz. İlk(ana) sayfaya geldiğinizde ise geri tuşuna basarak uygulamadan çıkarsınız. İkinci kısımdaki else koşulunda ise
webView.goBack(); yani ilk(ana) sayfa satırı baz alınır. Bu satır ilk(ana) sayfa demektir. Burada bir daha geri tuşuna basarsanız else koşulundaki
super.onBackPressed(); komutu devreye girerek uygulamadan çıkar.
İşte
@AwoApp; arkadaşın verdiği kod burada devreye giriyor. Burada önemli olan kısım siz 2 defa geri tuşuna basılınca uygulamadan çıkmak için gerekli komutu else parametresine atamanız gerektiğidir. Yani kod tek başına eklendiğinde herhangi bir sayfada geri tuşuna bastığınızda "çıkmak için 2 defa..." uyarısı verirken; else parametresine eklediğinizde sadece ana sayfada iken bu uyarıyı("çıkmak için 2 defa...") verir.
Kodun tam yazımı;
boolean doubleBackToExitPressedOnce = false;
@Override
public void onBackPressed() {
if(webView.canGoBack()) {
webView.goBack();
} else {
if (doubleBackToExitPressedOnce) {
super.onBackPressed();
return;
}
this.doubleBackToExitPressedOnce = true;
Toast.makeText(this, "Çıkmak için 2 kere geri tuşuna basın", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce=false;
}
}, 2000);
}
şeklindedir.
boolean doubleBackToExitPressedOnce = false; komutunu geri tuşu parametresinin başlangıcına yazmanız çok önemlidir. Aksi halde kodunuzu debug ederken hata verir ve çalıştırmaz.