Bu derste kod içerisinde, ekrandaki View nesneleriyle çalışmayı ve özelliklerini değiştirmeyi öğreneceğiz…
Ekrandaki View nesneleriyle kod içerisinden çalışmayı öğrenmek için önce bir proje oluşturalım:
- Project name: P006-ViewById
- Build Target: Android 4.2
- Application name: ViewById
- Package name: tr.androidApp.ViewById
- Create Activity: MainActivity
Koddan ekran nesnesine ulaşmamız için onun ID’sine ihtiyacımız var. ID Properties ya da layout dosyalarında bu ID yazılıyor. Nereden bulacağınız size kalmış. ID’nin belirli bir formatı var: @+id/name; Burada “+” bunun yeni bir kaynak olduğunun işareti ve eğer artı işareti mevcut değilse R.java sınıfına eklenmesi gerektiğine işaret ediyor.
Main.xml’i açalım, TextView için ID = @+id/myText işaretleyelim ve kaydedelim
R.java’yı açtığımızda id sınıfı için myText sabiti oluştuğunu görüyoruz. Yani ona ulaşmamız için R.id.myText yazmamız gerekiyor.
R.java TextView nesnesine bağlantılı ve nesneye program aracıyla ulaşmamız için R.java’yı kullanabiliriz. Bunun için bize findViewById yöntemi gerekecek. Bu yöntem View’u geri getiriyor. Bu yöntemin çağrısını yazalım. Şimdiye kadar kodumuzu onCreate yöntemiyle yazdığımızı hatırlatmak istiyorum. Bu yöntem etkileşim oluşturduğumuzda ortaya çıkıyor. Eğer nereye yazmanız gerektiğini anlamadıysanız dersin sonuna bakabilirsiniz.
MainActivity.java’yı açalım ve setContentView yöntemi çağrıştıran satırdan sonra aşağıdaki satırı yazalım:
View myTextView = findViewById(R.id.myText);
Eğer View alttan kırmızı ile çizilmişse, o zaman bu sınıf import bölümüne eklenmemiştir. İmpotun otomatik olarak yenilenmesi için CTRL+SHIFT+O tuşlarına aynı anda basmanız yeterli.
Şimdi myTextView TextView tipini aldı; findViewById yöntemin sonucunu View’dan, TextView’a değiştiriyoruz. Bundan sonra myTextView’a, TextView sınıfın yöntemlerini uygulayabiliriz. Örnek olarak setText yöntemini alalım. Şu anda görüntülenen metin şöyle “Hello World, MainActivity!” Biz bunu programlı olarak New text in TextView olarak değiştireceğiz.
myTextView.setText(“New text in TextView”);
Kaydediyoruz, başlatıyoruz (CTRL+F11) böylece metnin değiştiğini görüyoruz
Ekrana düğme ekleyelim (Button), Id = @+id/myBtn, varsayılan metni bırakalım. Kaydediyoruz: CTRL+SHIFT+S zira eğer kaydetmezsek, R.java’da ID oluşturulmayacak.
Kodu yazıyoruz:
Button myBtn = (Button) findViewById(R.id.myBtn);
Buradaki nesne isminin ve ID’nin aynı olmasına dikkat ediyoruz, bu çok önemli.
Bunlar birbirini engellemiyor, ancak böyle yapmak ilerleyen derslerde bizim için çok daha yararlı ve mantıklı bir alışkanlık oluşturacaktır. Düğmeyi bulduk, şimdi ise onun metnini değiştirelim
myBtn.setText(“My button”);
Uygulamayı başlatalım. Düğme üzerindeki metin değişti, düğmeye birkaç defa tıklayabiliriz. Fakat hiç birşey olmayacak, çünkü biz hiçbir yerde düğme tıklandığında neyin olacağını belirtmedik. Bumu bir sonraki derste göreceğiz. Şimdilik düğmeyi pasif yapalım.
myBtn.setEnabled(false);
Enabled parametresini değiştirdik. Şimdi düğmeye tıklayamayız. Kaydedelim, tekrar başlatalım ve bunu görelim.
CheckBox, id = @+id/myChb ekleyelim. Varsayılan ayarlarda işaret yoktur. İşareti programı kullanarak koyalım. Bunun için Checked parametresini değiştiren setChecked yöntemi kullanılıyor.
CheckBox myChb = (CheckBox) findViewById(R.id.myChb);
Uygulamayı başlatarak kodun işlediğini görebiliriz.
Gördüğünüz gibi pek de zor değil. ID’den herhangi bir View nesnesine uygun olan bir nesneyi elde etmek için findViewById yöntemini kullanıyoruz. Sonra ise gereken nesne yöntemlerin (setText, setEnabled, setChecked) oluşmasını sağlıyoruz.
Sonuçta böyle bir kod elde etmemiz gerekiyor:
package tr.androidApp.ViewByIdimport android.app.Activity; import android.os.Bundle; import android.widget.Button; import android.widget.CheckBox; import android.widget.TextView; public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView myTextView = (TextView) findViewById(R.id.myText); myTextView.setText("New text in TextView"); Button myBtn = (Button) findViewById(R.id.myBtn); myBtn.setText("My button"); myBtn.setEnabled(false); CheckBox myChb = (CheckBox) findViewById(R.id.myChb); myChb.setChecked(true); } }
Ders Sonu Notları:
Bu dersimizde sizlerle birlikte düğme oluşturmayı öğrendik. Disable ettiğimiz tıklanamayan bu düğmeyi, sonraki dersimizde nasıl tıklanabilir hale getireceğimiz ve de bu düğmeye bir görev bağlayarak işe yarar hale getirmeyi öğreneceğiz.