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

  • DudeFromUkraine

    DudeFromUkra

    7 Ocak 2008
  • Skittles Page

    Skittles Pag

    28 Mart 2011
  • xiaoyu85

    xiaoyu85

    20 ŞUBAT 2010