Android Programlama öğrenmeye devam ediyoruz. Bu derste butona basıldığında olayların işletilmesini öğreneceğiz.
Yeni bir proje oluşturalım:
- Project name: P007-OnClickButtons
- Build Target:Android 4.2
- Application name: OnClickButtons
- Package name: tr.androidApp.OnClickButtons
- Create Activity: MainActivity
Layout klasöründe main.xml dosyaya aşağıdaki kodları kopyalayalım.
<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout
xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:orientation=”horizontal”>
<LinearLayout
android:id=”@+id/linearLayout1″
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:layout_margin=”30dp”
android:orientation=”vertical”>
<TextView
android:id=”@+id/tvOut”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_gravity=”center_horizontal”
android:layout_marginBottom=”50dp”
android:text=”TextView”>
</TextView>
<Button
android:id=”@+id/btnOk”
android:layout_width=”100dp”
android:layout_height=”wrap_content”
android:layout_gravity=”center_horizontal”
android:text=”OK”>
</Button>
<Button
android:id=”@+id/btnCancel”
android:layout_width=”100dp”
android:layout_height=”wrap_content”
android:layout_gravity=”center_horizontal”
android:text=”Cancel”>
</Button>
</LinearLayout>
</LinearLayout>
Kodu kopyaladıktan sonra Graphical Layout içinde bir tane TextView ve iki tane buton olacaktır (OK ve Cancel). Ok butonuna basıldığında TextView : “Ok butona bastınız” mesajı verecektir. Cancel butonuna basıldığı zaman TextView: “Cancel butona bastınız” mesajı verecektir.
MainActivity.java dosyayı açalım. Değişkenlerin belirlenmesi OnCreate metodu dışında yaptık. Bunu neden yaptık? Diye sorabilirsiniz. Bu nesneleri (değişkenleri) başka metodlardan (fonksiyondan) kullanmak için bunu yaptık. OnCreate metodunda findViewById kullanarak bu nesnelere değeri atacağız. Bunları yaptıktan sonra aşağıdaki gibi bir kod oluşacaktır.
package tr.androidApp.OnClickButtons;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView tvOut;
Button btnOk;
Button btnCancel;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// View-nesneleri buluyoruz ve değişkenlere atıyoruz
tvOut = (TextView) findViewById(R.id.tvOut);
btnOk = (Button) findViewById(R.id.btnOk);
btnCancel = (Button) findViewById(R.id.btnCancel);
}
}
Import bölümünü güncellememiz gerekiyor (CTRL+SHIFT+O). Son kodların satırları tvOut, btnOk ve btnCancel View nesnelerin özelliğini alıyorlar ve biz bu değişkenleri View nesneleri olarak kullanabiliriz. Şimdi butonları etkinleştirelim. Bunu yapmak için setOnClickListener (View.OnClickListener l) metodu kullanacağız. Giriş için arayüzü (İnterfaces ) View.OnClickListener nesne kullanacağız.
OnClickListener oclBtnOk = new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub } };
Eclipse OnClickListener kırmızı çizgiyle işaretleniyor.
Çünkü Eclipse OnClickListener’i daha tanımıyor. Import bölümü güncelleyelim (CTRL+SHIFT+O) basıyoruz. Eclipse iki OnClickListener ara yüzü tanıdığını gösteriyor. Bize gerekli olan View.OnClickListener.
Çünkü setOnClickListener View.OnClickListener’i giriş olarak kullanıyor.
Az önce yeni oclBtnOk nesnesini oluşturduk. Bu nesne View.OnClickListener arayüzü kullanıyor. oclBtnOk nesnesi onClick metodu içeriyor. Butona basıldığında bu metodu çalışacaktır. Uygulamada Ok butonuna basıldığı zaman TextView (TvOut) : “Ok butona bastınız” mesajı verecektir. Bunu gerçekleştirelim.
OnClick metodunda aşağıda yazdığım gibi kodu yazınız:
tvOut.setText("Ok butona bastınız ");
İşlem hazırdır. Şimdi setOnClickListener kullanarak onu butona bağlayalım.
btnOk.setOnClickListener(oclBtnOk);
Sonunda aşağıdaki gibi bir kod bloku oluşmalı:
package tr.androidApp.OnClickButtons;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView tvOut;
Button btnOk;
Button btnCancel;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// View-nesneleri buluyoruz
tvOut = (TextView) findViewById(R.id.tvOut);
btnOk = (Button) findViewById(R.id.btnOk);
btnCancel = (Button) findViewById(R.id.btnCancel);
OnClickListener oclBtnOk = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tvOut.setText(“Ok butona bastiniz “);
}
};
btnOk.setOnClickListener(oclBtnOk);
}
}
Kaydedelim ve çalıştıralım. Sonra Ok butonuna basıldığı zaman karşımıza böyle bir pencere gelecektir.
Cancel butonuna basıldığı zaman hiçbir şey olmuyor. Çünkü Cancel butonu için bir etkileşim yaratmadık. Bunu Ok butonda gibi kodları yazalım:
OnClickListener oclBtnCancel = new OnClickListener() { @Override public void onClick(View v) { //TextView içeriği değiştiriyoruz (tvOut) tvOut.setText("Cancel butona bastiniz"); } };
Sonra onu butona bağlıyoruz:
btnCancel.setOnClickListener(oclBtnCancel);
Kaydediyoruz,çalıştırıyoruz ve kontrol ediyoruz. Artık iki butonu etkinleştirdik.
Şimdi daha önce adımları tekrarlayalım. Buton kendi kendine bir şey yapamıyor.Onu etkili hale getirmek için bir işletici yaratmamız gerekiyor. İlk önce bir dinleyici(listener) yaratmamız gerekir. Bunu yapmak için setOnClickListener metodu kullanıyoruz. Butona basıldığı anda dinleyici OnClick metodu kullanarak yazdığımız kodları çalıştıracak.
Ders Sonu Notları:
Bu dersimizde sizlerle birlikte butonu nasıl aktif haline getirmeyi öğrendik.
Sonraki dersimizde bir işletici birkaç tane View nesneleri nasıl işletebilmesi öğreneceğiz.Yeni derslerde görüşmek üzere Technopat’ı takip etmeye devam edin…