Soru & Cevap

if kontrolünde butona tıklanma durumu ...

10.12.2015 - 08:21

Merhaba, Android Studio'da çalışıyorum.

Butonu ilgilendiren ama setOnClickListener'ın dışında bir yerde bir metod tanımladım. Bu metodun içinde bir if kontrolü yapmak istiyorum.

if(buton1.tıklandığında || buton2.tıklandığında){
 Bu durum gerçekleşsin.
}else if(buton3.tıklandığında || buton4.tıklandığında){
 Diğer durum gerçekleşsin.
}

Metodu dışarda tanımlamamın sebebi, çok fazla buton kullanıyorum ve if kontrolü sadece bu kadar değil iç içe 2 tane ve bir for döngüsüne bağlı olabiliyor zaman zaman. Dolayısıyla o kadar kodu her birine ayrı ayrı yazınca şişiyor uygulama. Metodu dışarda tanımlayıp setOnClick'lerin içine atıyorum.

Metod dışarda olduğu için if(v.getid==r.id.button) gibi bir şey olamıyor çünkü "v" onClick'e ait. 

isClickable ve performClick ne işe yaradığını bulamadım ama deneyince onlarda olmadı.

Yardımcı olabilirseniz sevinirim. Bunu çözmeden malesef ilerleyemiyorum :/

3,035 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-62423-1460561213.jpg
emre.tsbs
14.12.2015 - 12:35

islemYapClick metodunu dışarıda tanımlayıp her bir setOnClickListener'ın içine attığımda alması gereken paramatre "v" oluyor tesadüfen buldum :)

islemYapClick(v);

Denedim çalışıyor, teşekkürler üstad.

Halit Peker
14.12.2015 - 10:46
evet onclicklistennerden gelen view olan v yi gonderırsen orda çalısır ama dırek bunu xml onclicke verırsen fazla kod yazmamıs olursun. tercih senın.
picture-46518-1428343928.jpg
halitpeker
13.12.2015 - 11:57
Bunalri setonclick e yazmana gerek yok direk xml dem onclclik degerine verirsen calisir ama illa o sekilde olsun diyorsan o farkli sekilde olur.
picture-46518-1428343928.jpg
halitpeker
11.12.2015 - 09:25

Xml de bütün butonlarının onclick degerine aynı değeri mutlaka id degerleri olsun.

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="islemYapClick"/>  

java kısmına aynı ısımle içine view alan bir public metot oluştur

	public void islemYapClick(View v)
	{
		 Button gelenBtn=(Button)v;
        
         if(gelenBTn.getId()==R.id.button1 || gelenBTn.getId()==R.id.button2){
           Bu durum gerçekleşsin.
         }else if(gelenBTn.getId()==R.id.button3 || gelenBTn.getId()==R.id.button4){
             Diğer durum gerçekleşsin.
         }
	}

Bu şekilde hangisine tıklanırsa ona işlem yaptırabılrısın bunların case olarakda kullanabılrısın

Emre Taşbaş
13.12.2015 - 11:49
Halit bey bu yöntemi görünce heyecanlandım, şuan denedim fakat dışarıda tanımladığım bu metodu setOnClickListener'ların içinde çağırdığımda metod parametre istiyor. Eğer bunu çözebilirsem bu iş tamamdır.