Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Crash in ListView at AbsListView.obtainView for ListActivity

I'm watching content updates on a ListActivity using a ContentObserver as follows:

protected void onCreate(Bundle savedState)    {         super.onCreate(savedState);          ContentResolver cr = getContentResolver();          Cursor cursor = cr.query(TrackHeader.CONTENT_URI, sTrackListProjection, null, null, null);         startManagingCursor(cursor);          this.mAdapter = new TrackHeaderDataAdapter(this, R.layout.track_list_item, cursor, sTrackListProjection, null);         setListAdapter(mAdapter);          Handler handler = new Handler();          mTrackHeaderObserver = new ContentObserver(handler) {               @Override               public boolean deliverSelfNotifications() {                   return false;              }               @Override              public void onChange(boolean selfChange) {                  super.onChange(selfChange);                  ContentResolver cr = getContentResolver();                  mAdapter.changeCursor(cr.query(TrackHeader.CONTENT_URI, sTrackListProjection, null, null, null));               }          };        getContentResolver().registerContentObserver (TrackHeader.CONTENT_URI, true, mTrackHeaderObserver);   } 

This content observer seems to be ok -- it gets called back on the UI thread but I am getting the following random crash pretty predictably on the underlying ListView:

02-21 14:06:00.440: ERROR/AndroidRuntime(739): java.lang.NullPointerException 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at  android.widget.AbsListView.obtainView(AbsListView.java:1276) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.widget.ListView.makeAndAddView(ListView.java:1668) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.widget.ListView.fillDown(ListView.java:637) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.widget.ListView.fillSpecific(ListView.java:1224) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.widget.ListView.layoutChildren(ListView.java:1499) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.widget.AbsListView.onLayout(AbsListView.java:1113) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.view.View.layout(View.java:6830) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.view.View.layout(View.java:6830) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.view.View.layout(View.java:6830) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.view.View.layout(View.java:6830) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.widget.LinearLayout.onLayout(LinearLayout.java:918) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.view.View.layout(View.java:6830) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.view.View.layout(View.java:6830) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.view.View.layout(View.java:6830) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.view.View.layout(View.java:6830) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.view.ViewRoot.performTraversals(ViewRoot.java:996) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1633) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.os.Handler.dispatchMessage(Handler.java:99) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.os.Looper.loop(Looper.java:123) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at android.app.ActivityThread.main(ActivityThread.java:4363) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at java.lang.reflect.Method.invokeNative(Native Method) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at java.lang.reflect.Method.invoke(Method.java:521) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 02-21 14:06:00.440: ERROR/AndroidRuntime(739):     at dalvik.system.NativeStart.main(Native Method) 02-21 14:09:56.159: ERROR/AndroidRuntime(749): ERROR: thread attach failed 02-21 14:09:59.480: ERROR/AndroidRuntime(760): ERROR: thread attach failed 02-21 14:12:19.449: ERROR/AndroidRuntime(778): ERROR: thread attach failed 02-21 14:12:22.779: ERROR/AndroidRuntime(789): ERROR: thread attach failed 02-21 14:12:26.479: ERROR/gralloc(51): [unregister] handle 0x3f13b8 still locked (state=40000001) 

Anyone seen anything like this before -- been stumped on this one for a few days...

Tim

like image 299
Tim Avatar asked Feb 21 '10 22:02

Tim


1 Answers

I had a similar stack trace and discovered that I was returning a null from my getView() method in certain cases.

like image 159
jonny99 Avatar answered Sep 29 '22 14:09

jonny99