2010-09-23 9 views
5

Uygulamam başlatıldığında çağrılan bir sınıfa sahibim. mükemmel Bu durumda Android - findViewById (R.id.list) döndürüyor null

public class MainActivity extends Activity implements NetworkEvent. 

,

list = (ListView) findViewById(R.id.list); 

çalışır. Ancak daha sonra bu yeni niyet çağrısı:

String[] names = object.names(); 

niyet myIntent = yeni Amacı (MainActivity.this, SimpleList.class); myIntent.putExtra ("adlar", adlar); startActivityForResult (myIntent, 0);

SimpleList olarak tanımlanır

: Ben buna daha sonra

public class SimpleList extends ListActivity implements NetworkEvent 

list=(ListView) findViewById(R.id.list); 

Log.i ("Uygulamam", "listesi:" + liste); SimpleList sınıf içinde

, liste boş :(olduğunu

Nasıl yani? Hem sınıflar aynı paketin içindedir.

teşekkürler.

cevap

16

Tam olarak emin değilim o neden oluyor senin durumunda, ancak düzen XML ListView yılında, <ListView android:id="@android:id/list" değil, tipik <ListView android:id="@+id/list" olarak tanımlanmalıdır. sınıf ListActivity uzanıyorsa, bu durumda, sadece listesine erişmek için getListView() kullanın.
Kontrolü Bunu yapmak için:

+0

Harika! Çok teşekkür ederim, işte bu! – Dave

+1

ListView bir FragmentActivity alt öğesinde başlatıldığında çalışmaz. Aynı boş nesne döndü. – Xeos

9

Herhangi bir kimliğin bulunabilmesi için önce setContentView(R.whatever) numaralı telefonu aradığınızdan emin olun.

+0

yup - bana çalıştı – sami

+0

teşekkürler adam ..... !!! – iAmLearning

+0

gerçekten - teşekkürler! – ludwigmace

1

Benzer bir durumda, LinearLayout görünümü ekledikten sonra findViewById benim için çalışmayı durdurdu.

çözüm ayrıca aşağıdaki eklemek oldu: LinearLayout için

xmlns:android="http://schemas.android.com/apk/res/android"

. Az önce ne değinmek istiyorum

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
    android:text="test" 
    android:layout_width="fill_parent" 
    android:layout_height="40dp"> 
    </TextView> 

    <ListView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent">  
    </ListView> 

</LinearLayout> 
0

örneğin

"http://schemas.android.com/apk/res/android" senin liste görünümü

, ekleme benim sorunumdu. XML'imde, android:id="@+id/bob" yerine android:name="@+id/bob"'u atamıştım, ancak @ + kimliğinden dolayı bunu hala bir akıllı alan olarak kaydetmekteydim.