Button Click Olayını Yakalamak

@ 21 Kasım 2011 tarihinde yazdı. Yazıya yorum yazın.

Bu makalede Butonun tıklama olayını nasıl yakalayacağımızı anlatacağım.
Butonun OnClickListener özelliğini set etmemiz gerekir. Butona özel OnClickListener tanımlayabileceğimiz gibi ekrandaki tüm butonlar için ortak bir OnClickListener tanımlayabiliriz.

Tüm butonlar için ortak listener tanımlamak için Activity sınıfımızda OnClickListener interface’ini implemente ederiz.

import android.view.View.OnClickListener;
public class MerhabaAndroidActivity extends Activity implements OnClickListener

OnClickListener interface’inde onClick methodu gelir. Bu methodta View tipinde bir parametre vardır. Bu tıklanan butonu temsil eder.

	@Override
	public void onClick(View v)
	{
	   int tiklananButonId = v.getId();

		if(tiklananButonId == R.id.buttonGiris)
		{
			GirisIslemi();
		}
	}

Ekranımızda birden fazla buton olabileceği için bu methodu hangi butonun tetiklediğini View tipindeki parametrenin Id sine bakarak karar verebiliriz.
Butonumuzun interface ile beraber gelen onClick methodunu kullanması için Activity sınıfımızın onCreate methodunda  buttonGiris.setOnClickListener(this);
şeklinde belirtiyoruz.

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        buttonGiris.setOnClickListener(this);
    }

Aşağıdaki örnekte basitçe bir login ekran tasarım örneği bulunmaktadır.

main.xml dosyası :

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent">

    <EditText android:hint="@string/kullaniciAdiGir" android:id="@+id/editTextKullaniciAdi"
        android:layout_height="wrap_content" android:layout_width="170dp">

    </EditText>

    <EditText android:hint="@string/sifreGir" android:id="@+id/editTextSifre"
        android:layout_width="170dip" android:layout_height="wrap_content"
        android:layout_below="@+id/editTextKullaniciAdi" android:inputType="textPassword">
    </EditText>

    <Button android:text="Giriş" android:id="@+id/buttonGiris"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_below="@+id/editTextSifre" android:layout_alignRight="@+id/editTextSifre"></Button>

    <EditText android:id="@+id/editTextSonuc"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_below="@+id/buttonGiris"
        android:layout_alignParentLeft="true" android:layout_alignRight="@+id/buttonGiris">

    </EditText>
</RelativeLayout>

res/values/strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Merhaba Kadir Has</string>
    <string name="app_name">Merhaba Android</string>
    <string name="kullaniciAdiGir">Kullanıcı Adı </string>
    <string name="sifreGir">Şifre</string>
    <string name="basariliGiris">Başarılı Giriş</string>
    <string name="basarisizGiris">Kullanıcı Adı veya Şifre Yanlış</string>
    <color name="kirmizi">#FF0000</color>
    <color name="yesil">#00FF00</color>
</resources>

Activity sınıfımız (MerhabaAndroidActivity):

 

package ceturk.egitim;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MerhabaAndroidActivity extends Activity implements OnClickListener {

	Button buttonGiris;
	EditText editTextKullaniciAdi;
	EditText editTextSifre;
	EditText editTextSonuc;

	/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        buttonGiris = (Button)findViewById(R.id.buttonGiris);
        editTextKullaniciAdi = (EditText)findViewById(R.id.editTextKullaniciAdi);
        editTextSifre = (EditText)findViewById(R.id.editTextSifre);
        editTextSonuc = (EditText)findViewById(R.id.editTextSonuc);

        buttonGiris.setOnClickListener(this);
    }

	@Override
	public void onClick(View v)
	{
	   int tiklananButonId = v.getId();

		if(tiklananButonId == R.id.buttonGiris)
		{
			GirisIslemi();
		}
	}

	private void GirisIslemi()
	{
		String kullaniciAdi = editTextKullaniciAdi.getText().toString();
		String sifre = editTextSifre.getText().toString();
		String sonuc="";

		int renkId=0;

		if(kullaniciAdi.equals("mehmet") && sifre.equals("aca"))
		{
			//sonuc ="Başarılı Giriş";

			sonuc = getResources().getString(R.string.basariliGiris);
			renkId = R.color.yesil;
		}
		else
		{
			sonuc = getResources().getString(R.string.basarisizGiris);
			renkId = R.color.kirmizi;
		}

		editTextSonuc.setText(sonuc);
		editTextSonuc.setTextColor(getResources().getColor(renkId));

	}
}

Ekran Görüntüsü

Ekran Görüntüsü

Uygulamanın kaynak kodunu indirmek için tıklayınız

İyi Çalışmalar.
Mehmet Aca