SORU
16 Temmuz 2010, Cuma


findViewByİD döndürür null

Birincisi: evet, bu konuyla ilgili diğer konuları okudum. Ve sadece bu siteden bu... (biraz hayal kırıklığına uğradım)

Çoğu XML dosyası android:id kullanmak için tavsiye yerine id sadece. Yaptım.

Başkalarından, View.findViewById Activity.findViewById daha farklı çalıştığını öğrendim. Bunu da hallettim.

Benim location_layout.xml, ben kullanın:

<FrameLayout .... >
    <some.package.MyCustomView ... />

    <LinearLayout ... >
        <TextView ...
            android:id="@ id/txtLat" />
        ...
    </LinearLayout>
</FrameLayout>

Benim Etkinlik yapıyorum:

...
setContentView( R.layout.location_layout );

ve benim özel bir sınıf görünümü:

... 
TextView tv = (TextView) findViewById( R.id.txtLat );

null verir.Bunu yaparken, benim Aktivite iyi çalışır.Belki de Activity.findViewById View.findViewById farklılıklar yüzünden. Kapsamında gümrük görünüm yapıcı geçti ben yerel olarak depolanan ve çalıştı:

...
TextView tv = (TextView) ((Activity) context).findViewById( R.id.txtLat );

ayrıca null geri dönmüştür.

Daha sonra değiştirdim benim özel görünüm uzatmak ViewGroup yerine View değişen location_layout.xml izin TextView doğrudan çocuğun benim özel görünüm, böylece View.findViewById gerektiği gibi çalışması gerekiyor. Sürpriz: hiç bir işe yaramadı.

Heck neyi yanlış yapıyorum?

Herhangi bir yorum takdir ederim.

CEVAP
16 Temmuz 2010, Cuma


null döndürür

Çok erken diyorsun, çünkü muhtemelen. onFinishInflate() kadar bekleyin. Bir özel gösteren Here is a sample project içeriğini erişme Görüntüleyin.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bmarian22

    bmarian22

    22 Aralık 2007
  • MugenPowerBatteries

    MugenPowerBa

    8 EKİM 2010
  • Paste Magazine

    Paste Magazi

    28 AĞUSTOS 2008