В моей деятельности есть TabView с 3 вкладками, каждая вкладка имеет ListView и кнопку.
Когда я перемещаюсь по вкладкам с помощью D-Pad на эмуляторе, проблем не возникает, но когда я использую колесо прокрутки (мышь) для навигации по представлению и затем нажимаю в представлении, появляется ForceClose. Я думаю, что это как-то связано с «touchmodechange», но не уверен, как с этим справиться. Очень ценю любую помощь ...
12-23 19:14:25.352: ERROR/ActivityThread(116): Failed to find provider info for android.server.checkin
12-23 19:18:09.184: ERROR/AndroidRuntime(226): Uncaught handler: thread main exiting due to uncaught exception
12-23 19:18:09.224: ERROR/AndroidRuntime(226): java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread.
12-23 19:18:09.224: ERROR/AndroidRuntime(226): at android.widget.ListView.layoutChildren(ListView.java:1428)
12-23 19:18:09.224: ERROR/AndroidRuntime(226): at android.widget.AbsListView.onTouchModeChanged(AbsListView.java:1888)
12-23 19:18:09.224: ERROR/AndroidRuntime(226): at android.view.ViewTreeObserver.dispatchOnTouchModeChanged(ViewTreeObserver.java:591)
12-23 19:18:09.224: ERROR/AndroidRuntime(226): at android.view.ViewRoot.ensureTouchModeLocally(ViewRoot.java:1877)
12-23 19:18:09.224: ERROR/AndroidRuntime(226): at android.view.ViewRoot.ensureTouchMode(ViewRoot.java:1861)
12-23 19:18:09.224: ERROR/AndroidRuntime(226): at android.view.ViewRoot.handleMessage(ViewRoot.java:1652)
12-23 19:18:09.224: ERROR/AndroidRuntime(226): at android.os.Handler.dispatchMessage(Handler.java:99)
12-23 19:18:09.224: ERROR/AndroidRuntime(226): at android.os.Looper.loop(Looper.java:123)
12-23 19:18:09.224: ERROR/AndroidRuntime(226): at android.app.ActivityThread.main(ActivityThread.java:4203)
12-23 19:18:09.224: ERROR/AndroidRuntime(226): at java.lang.reflect.Method.invokeNative(Native Method)
12-23 19:18:09.224: ERROR/AndroidRuntime(226): at java.lang.reflect.Method.invoke(Method.java:521)
12-23 19:18:09.224: ERROR/AndroidRuntime(226): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
12-23 19:18:09.224: ERROR/AndroidRuntime(226): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
12-23 19:18:09.224: ERROR/AndroidRuntime(226): at dalvik.system.NativeStart.main(Native Method)
private void fillData(int tab)
{
Cursor cursor;
Long millis;
String tempstr;
//query table and obtain cursor
if(tab==0)
cursor=dbAdapter.getAllRemindersCursor();
else if(tab==1)
cursor=dbAdapter.getAutoRemindersCursors();
else if(tab==2)
cursor=dbAdapter.getUserRemindersCursors();
else
cursor=dbAdapter.getAllRemindersCursor();
results.clear();
//populate the ArrayList using the cursor
if(cursor!=null)
{
if(cursor.moveToFirst())
{
Log.d("Msg","Cursor at first item");
Log.d("Msg",cursor.getCount()+" items in cursor");
do
{
millis=cursor.getLong(1);
tempstr=cursor.getString(2);
tempstr=" "+tempstr+"\n"+" "+dtf.format(millis);
results.add(tempstr);
category.add(cursor.getInt(4));
Log.d("Msg","message and type items added");
}
while(cursor.moveToNext());
}
}
else
{
Log.d("Msg","Cursor is empty");
}
if(tab==0)
lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,results));
else if(tab==1)
lv2.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,results));
else if(tab==2)
lv3.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,results));
else
lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,results));
}
Этот метод вызывается каждый раз, когда срабатывает onTabChangedListener. Другие мудрые есть
больше ничего в настоящее время в этой деятельности.