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

  • bunnyboxx

    bunnyboxx

    17 NİSAN 2008
  • Strata1000

    Strata1000

    28 EYLÜL 2009
  • The CGBros

    The CGBros

    20 AĞUSTOS 2011