Merhaba arkadaşlar. Bu dersimizde, sayfalarımızda kullanacağımız araçlardan RadioButton ve CheckBox kullanımını anlatacağım. Bu araçlardan CheckBox, çoklu seçim için kullanılır. RadioButton ise tekli seçim için kullanılır.
İlk olarak bir proje oluşturalım. Proje oluşturmada sıkıntı yaşıyorsanız ilk derslerimize bakabilirsiniz. Uygulamamızdaki tek sayfa olan activity_main.xml sayfasının görsel kısmına gelelim. Hep activity_main.xml diyoruz fakat default ayarlarla projemizi oluşturduysak bu isimde gelecektir. Projeyi oluştururken bu sayfanın ismini ve aktivity ismini belirleyebiliriz.
Sayfamıza soldaki panelden 3 adet RadioButton ve 4 adet CheckBox ekleyelim. Bunların üzerlerine de 2 adet TextView ekleyelim ve uygun yazımızı yazalım. Ben uygulamamda şu şekilde eklemeler yaptım.
Yukarıdaki 3 adet RadioButon’lardan 1 tanesini seçebileceğiz. Fakat alttaki 4 CheckBox’tan istediğimiz kadar seçim yapabileceğiz. Bu iki araç arasındaki farkı bilmiyorsanız bu şekilde ayırt edebilirsiniz.
Şimdi burada yapmamız gereken birşey var. Biz RadioButton’lardan sadece 1 tanesine tıklanmasını istiyorsak bunları RadioGroup içerisine almamız gerekir. Bunu xml sayfamızda yapıyoruz. RadioButonlarımızı, RadioGroup etiketleri arasına alıyoruz.
Bu işlemi yaptıktan sonra artık RadioButonlardan yalnızda birini seçebileceğiz. Şimdi MainActivity.java dosyamıza gelelim ve kodlarımızı aşağıdaki gibi yazalım.
Bu kodların devamına şunları da ekleyelim.
Burada RadioButonların seçilip seçilmediğinin kontrolünü şu kodla yaptık.
1 |
rg1.getCheckedRadioButtonId(); |
Bu bize RadioGroup içerisinde seçilen Radiobuton’un id‘sini verir. Daha sonra int tipindeki bu id’yi ,switch içerisine koyduk ve hangisinin seçildiğinin kontrolünü yaptık. CheckBox için de isChecked() metodunu kullandık. Bu metod, seçili olup olmadığını boolean türünde bize döndürür. Eğer seçiliyse, metin değişkenimize istediğimiz metni ekliyoruz ve son olarak bunu toast ile ekrana gösteriyoruz. Toast, ekranda bir metnin yazılmasını sağlar. Kısa bir süre sonra bu metin kaybolur. Programı çalıştırdığımızda çıktımız şu şekilde olacaktır.
Takımı seçerken yalnızca bir tane seçebiliyoruz fakat dil seçerken birden fazla seçebiliyoruz. Eğer takım seçimindeki RadioButonları, RadioGroup içerisine almasaydık birden fazla seçebilecektik. O yüzden bunları RadioGroup içerisine almamız gerekiyor.
RadioButton ve CheckBox Kullanımı ile Başka Bir Örnek
Şimdi yeni bir örnek yapalım. Örneğimize başlamadan önce bu örneği farklı yoldan yapacağımız için bu RadioButton ve CheckBox için kullanılan metodları gösterelim.
Bir CheckBox’ın seçili olup olmadığını isChecked() metodu ile anlarız. Kullanımı ise şu şekildedir.
1 |
if(cb.isChecked()) { // Eğer seçilmişse, yapmak istediklerimizi buraya yazarız } |
CheckBox’ın seçimini kod ile yapmak istiyorsak setChecked() metodunu kullanmalıyız. Bunun kullanımı ise şu şekildedir.
1 |
cb.setChecked(true); cb.setChecked(false); |
Ekrandaki CheckBox’ların herhangi birinin seçimi değiştirildiğinde ise onCheckChanged() metodu kullanılır. Bunun kullanımı şu şekildedir.
1 |
public void onCheckedChanged(CompoundButton x1, boolean x2) { // Yapılacaklar } |
Fakat bunu, setOnCheckedChangeListener ile (bu listener içerisinde) kullanmamız gerekiyor. Çünkü ilk olarak Listener ile ortamın dinlenmesi gerekir. Daha sonra yapılacak işlemin gösterilmesi gerekiyor.
RadioButon ile ilgili de şunu söyleyelim. RadioButonun üzerinde yazan yazıyı almak için aşağıdaki metod kullanılır.
1 |
rb1.getText().toString(); |
Buradaki rb1, RadioButon nesnesinin ismidir. Bu metoddan dönen değeri bir String değişkene atayabiliriz.
Şimdi ilk olarak yeni bir proje oluşturalım. Projemizin görünümünü aşağıdaki gibi yapalım. Layout olarak TableLayout kullanırsanız nesneleri daha rahat yerleştirebilirsiniz.
Uygulamamızda CheckBox’ı seçtiğimizde buton aktif hale gelsin. Eğer onayı kaldırırsak tekrar silik olsun. Bunun için java dosyamıza gelelim ve şu kodları yazalım.
Uygulamamızı çalıştırdığımızda CheckBox’a tıklanınca buton aktif hale gelecektir. İşareti kaldırdığımızda ise sönük olacaktır.
Toast Kullanımı
Eğer uygulamamızda, bir süreliğine bir mesaj gösterilmesini ve daha sonra da mesajın kaybolmasını istiyorsak toast kullanırız.
Kullanımı ise şu şekildedir:
1 |
Toast.makeText(hangi activiy için mesaj verilecek, verilecek mesaj, mesajın süresi).show(); |
Buradaki parametrelerden ilki, hangi activity için mesaj verilmek istendiğidir. 2.parametre ise gösterilecek olan String tipindeki mesajdır. Son parametre de mesajın ekranda kalacağı süredir. Örnek bir kullanım verirsek;
1 |
Toast.makeText(MainActivity.this, “Bu bir toast mesajıdır”, Toast.LENGTH_SHORT).show(); |
Buradaki 2.parametreye doğrudan mesajı değil de bir String tipindeki değişkeni de verebiliriz. Son parametreye de 0 ya da Toast.LENGHT_LONG verebiliriz.
Guzel anlatim ve paylasimlar icin tesekkurler. Kodu yazamadim ama son kisimda gozden kacan ufak bir nokta olmus sanirim. Button’u enable/disable etmek icin c1.setEnabled() yerine b1.setEnabled() kullanilmasi gerekir. Ve Buton’un aktiflik durumunun program ilk calistiginda setEnabled(false) olarak baslamasi uygun olur. Bunlar anlatimi etkileyen noktalar degil ama ilk defa kodu yazip deniyen arkadaslar icin kafa karistirici olabilir diye belirtmek istedim.
Düzelttiğiniz için teşekkür ediyorum. Evet dediğiniz gibi b1.setEnabled() olması gerekiyor.
Hocam iyi günler. Sizin yazdığınız şekilde 1. örneği yazdım ama hata veriyor. derlemiyor. Androidde yeniyim yardımcı olursanız sevinirim.
[2014-10-30 08:58:48 – 6_RadioButton_CheckBoxProjectName] Installation failed due to invalid APK file!
[2014-10-30 08:58:48 – 6_RadioButton_CheckBoxProjectName] Please check logcat output for more details.
[2014-10-30 08:58:48 – 6_RadioButton_CheckBoxProjectName] Launch canceled!
Merhaba. Buradan hata anlaşılmaz. Logcat’teki yazanları inceleyin.
sa abi çok ıyı yapmıssınız yenı uygulamar ısteyoruzz bezz
Hocam bu int butonid=rg1.getCheckedRadiobuttonId hat verior rg1 “neden ???
Hocam selam,
Buton tanımlarken Final yazmayınca başına if içerisinde b1 ler hata veriyor. Final yazmamızdaki amaç nedir ?
İkincisi buton tanımladıktan sonra altına
b1.setEnabled(false); yazarsak program açılışta buton pasif gelir. Onay tıklanınca aktif oluyor böylesi daha güzel oldu sanki bu bir öneri sadece.
Kodu yazdığınız satıra göre değişir. Metod içerisinden sınıf içerisinden vs. Final yazmakta sıkıntı yok hocam
Bu menülerin c programda benzeri nasıl yazılabilir?
Onu bilmiyorum biraz araştırın