Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android - findViewById(R.id.list) returns null

I have a class that is called when my app launches.

public class MainActivity extends Activity implements NetworkEvent.

In this situation,

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

works perfectly. However if I then call a new intent via:

   String[] names = object.names();

Intent myIntent = new Intent(MainActivity.this, SimpleList.class); myIntent.putExtra("names", names); startActivityForResult(myIntent, 0);

where SimpleList is defined as:

public class SimpleList extends ListActivity implements NetworkEvent

then when I call

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

Log.i("MyApp", "List:" + list);

from within the SimpleList class, list is null :(

How come? Both classes are within the same package.

Thanks.

like image 239
Dave Avatar asked Sep 23 '10 21:09

Dave


3 Answers

I'm not exactly sure why it is happening in your case, but the ListView in your layout XML, must be defined as <ListView android:id="@android:id/list", not the typical <ListView android:id="@+id/list". If your class extends ListActivity, in that case, you just use getListView() to access the list.
Check out this: http://developer.android.com/reference/android/app/ListActivity.html

like image 50
Chris Fei Avatar answered Oct 15 '22 11:10

Chris Fei


Make sure you call setContentView(R.whatever) before you can find any ids in it.

like image 33
Maaalte Avatar answered Oct 15 '22 10:10

Maaalte


In a similar case, findViewById stopped working for me after adding a LinearLayout view.

The solution was to also add the following:

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

to LinearLayout.

like image 1
Nikos Tsokos Avatar answered Oct 15 '22 09:10

Nikos Tsokos