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

  • Eric Enge

    Eric Enge

    2 Kasım 2009
  • InfoPuppet

    InfoPuppet

    15 Kasım 2011
  • ParryGripp

    ParryGripp

    12 AĞUSTOS 2006