Oca 10

Programımızı oluştururken geri butonuna basıldığında, programın kapatılmasından önce bir uyarı verdirmek isteyebiliriz. Çünkü belki o sırada arkaplanda yarım kalmasını istemeyeceğimiz başka işlemler gerçekleşiyor olabilir. Yada kullanıcının yanlışlıkla geri butonuna basma ihtimalini düşünerek önlem almak isteyebilirsiniz.

Bu gibi durumlarda en basit haliyle bir AlertDialog kullanarak kullanıcıyı uyarabilir, “Çıkmak İstediğinizden Emin Misiniz?” gibi bir uyarı verdirebiliriz.

Peki bunun için öncelikle ne yapmalıyız?

 Öncelikle geri butonuna basılma olayının tetiklenip tetiklenmediğini bilmeliyiz.

Oluşturduğumuz proje içerisinde Source –> Override/Implement Methods ‘a tıklayalım ve Activity sınıfına ait onKeyDown() metodunu projemiz içerisine ekleyelim.

onKeyDown() metodu, telefon üzerinde herhangi bir tuşa basıldığında tetiklenen metottur. Eğer biz bu metodun içerisinde basılan tuş geri tuşuysa gibi bir If bloğu yerleştirirsek, geri butonuna basıldığında istediğimiz işlemleri gerçekleştirebiliriz.

Şimdi onKeyDown() metodu içerisine gelelim.

if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {}

kodunu ekleyelim. Bu kodu kısaca açıklamak gerekirse, eğer geri butonuna basılmışsa ve bu olayın getRepeatCount() ‘u sıfırsa yani, geri tuşuna basıldığı anda program içindeki tüm dallanmalar bitmiş ve bu geri tuşu programı kapatacak olan geri tuşu ise. (Program içerisinde sayfalar arası geçişler yaptıysak mesela, her bir geri tuşunda bir önceki sayfaya döner. getRepeatCount()=0 demek program içerisinde başka hiçbir sayfaya dallanma yok demek. Bir başka deyişle başlangıç sayfasındasın demek)

Şimdi bu If bloğu içerisinde bir try-catch yapısı ekleyelim ve içerisine aşağıdaki kod yapısını yazalım.

if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
//Eğer geri butonuna basılırsa

try{
AlertDialog.Builder alertDialogBuilder=new AlertDialog.Builder(this); //Mesaj Penceresini Yaratalım
alertDialogBuilder.setTitle("Programdan Çıkılsın Mı?").setCancelable(false).setPositiveButton("Evet", new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int id) { //Eğer evet butonuna basılırsa
dialog.dismiss();
android.os.Process.killProcess(android.os.Process.myPid());
//Uygulamamızı sonlandırıyoruz.
		                    }

}).setNegativeButton("Hayır", new OnClickListener() { 
//Eğer hayır butonuna basılırsa

@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "Programdan çıkmaktan vazgeçtiniz.", Toast.LENGTH_SHORT).show();                 
		  }
});

alertDialogBuilder.create().show();
//son olarak alertDialogBuilder'ı oluşturup ekranda görüntületiyoruz.
return super.onKeyDown(keyCode, event);
		        }
catch(IllegalStateException e){  //yapımızı try-catch blogu içerisine aldık
		                //hata ihtimaline karşı.
e.printStackTrace();
		        }
return true;
		    }

Daha önce AlertDialog kullanımını, AlertDialog içerisinde butonların click olaylarını ve Toast ile mesaj verdirme gibi konuları anlatmıştım. Bu nedenle bunları yeniden anlatmıyorum. Bu konularla ilgili bilgi edinmek isterseniz daha önceki anlatımlarımı gözden geçirmenizi öneririm.

Yukarıdaki kod yapısı içerisinde gördüğünüz gibi eğer kullanıcı, AlertDialog içerisinde karşısına gelen mesajda “Evet” ‘i seçer ve programdan çıkmak isterse, programın sonlanmasını sağlayan kod yapısı aşağıdaki gibidir.

android.os.Process.killProcess(android.os.Process.myPid());

Ekran Çıktısı

15.1

Eğer Hayır butonuna basılırsa,

15.2

Yorum Yaz