2011-08-01 30 views
15

'daki tüm kimlikler için değişkenleri otomatik olarak yaratın Android geliştirmenin en sıkıcı parçalarından biri, yerleşim düzenleyicisi ile bile düzen tasarımıdır.Android: xml

düzen elemanları ile değişken dernekleri, ardından düzen grafik, kurma yaptıktan sonra daha büyük düzenlerde, bu (isimleri hatırlatarak izlemek için yorucu olabilir böyle ImageButton myButton = (ImageButton)findViewById(R.id.myButton);

olarak, çok sıkıcı Öğeler) ve daha sonra her türlü düzende daha fazla değişken ekleme ihtiyacı sinir bozucu olur.

Ben XML ilan kimliklerinin tüm otomatik olarak uygun değişkenler ile ilişkiliydi ve bu veri türlerini hepsi zaten bu sınıfta

dahil olsaydı biraz bu hafifletmek için, çok uygun olacağını bir şey var mı Bu zaten var?

örneğin

Ben

<ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/myButton" android:id="@+id/myButton"></ImageButton> 

yazarsam o zaman zaten bu bir ayar veya istemek için bir özelliktir

import android.ImageButton; 

ImageButton myButton; 

myButton = (ImageButton)findViewById(R.id.myButton); 

olması bu düzeni dahil sınıfları istersiniz? Eclipse IDE kullanıyorum ve çok uygun olurdu

+0

değil benim bildiğim ama serin olacağını - belki yazmak? :) – Jords

+0

Elbette, otomatik kod dinleyici hiç yapmadım ... nasıl başlarım? Android AVD'nin bu kısmı da açık kaynak olur mu? – CQM

cevap

15

Android Annotations'u kullanmayı deneyin. Boilerplate kodunu değiştirmek için yararlı açıklamalar sağlar.

Örneğin

, @ViewByIddocumentation bkz: sadece bu

EditText myEditText; 

TextView textView; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    [...] 
    myEditText = (EditText) findViewById(R.id.myEditText); 
    textView = (TextView) findViewById(R.id.myTextView); 
} 
0

Bu bir özellik isteği. Çok güzel bir şey ve bence oldukça kullanışlı olurdu; Öte yandan, örneğin, belirli bir Etkinliğin izleyeceği derleme zamanında, dinamik olarak ve bilmeden görüşlerini şişiriyorsanız, çok iyi çalışmadığı durumlar da vardır. Ancak, bu davanın kuraldan ziyade istisna olacağını düşünüyorum.

Bunu yapmanın en kolay yolu, mizanpajlı bileşenleri aramak için düzen XML dosyalarınızı tarar ve betikleri .java dosyalarını doğru tanımlarla oluşturur. Ardından, etkinlikleriniz otomatik olarak oluşturulan sınıflardan kaynaklanabilir. Böyle bir şey: Senaryonuzun tarafından işlenen

, yani bir sınıf oluşturur: ... sadece bileşenleri kullanmak için bu temel sınıfından olabilir, Sonra

class FooBarLayoutActivityBase extends Activity ... { 
    protected ImageButton myButton; 

    FooBarLayoutActivityBase() { 
    myButton = (ImageButton)findViewById(R.id.myButton); 
    } 
} 

Komut dosyası yaklaşımı basittir ve araç çubuğunun kodunu incelemenizi gerektirmez - ancak bunu doğrudan ADT eklentisinde de yapabilirsiniz.

+0

FindViewById() yöntemi yalnızca setContentView yöntemine çağrı yaptıktan sonra çalıştığınız için kodunuz çalışmayacaksınız. –

25
Ben otomatik olarak birbirine Düzen XML en ve program mantığı bağlama için Java kodu oluşturmak için bir araç yapılmış

yerini

@ViewById 
EditText myEditText; 

@ViewById(R.id.myTextView) 
TextView textView; 

açıklamalı alanları beyan .

Temel olarak bir XML düzenini alır ve bir anda sizin için tüm gerekli Java kodunu oluşturur. Temel üye değişkenleri, ViewHolder kalıbı, ArrayAdapter, CursorAdapter ve RoboGuice kod tipleri için destek vardır.

Burada bulabilirsiniz: Android Layout Finder | Buzzing Android

+0

Yanıtınızı gönderdiğiniz için teşekkürler! Lütfen [Kendini Tanıtma ile İlgili SSS] 'yı (http://stackoverflow.com/faq#promotion) dikkatli bir şekilde okuduğunuzdan emin olun. Ayrıca, kendi sitenize/ürününüze her bağlandığınızda bir * feragat ettiğinizi * zorunlu olduğunu unutmayın. –

+2

Gerçekten iyi @JesperB ..... Kullanıyorum ve gerçekten yararlı ... – SK16

+0

Güzel iş! Bunu tüm arkadaşlarıma göstereceğim: D –

İlgili konular