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

  • eurotuner

    eurotuner

    6 Mart 2006
  • Jabari Johnson

    Jabari Johns

    18 Ocak 2008
  • Rockstar Games

    Rockstar Gam

    17 ŞUBAT 2006