OnItemClickListener
在为我的列表使用光标适配器时,我想问两个与 的行为有关的问题。进一步来说:
我已经覆盖了getCount()
游标适配器以添加日志(以便检查何时调用它)。我注意到,当我单击列表中的一个项目时,我看到 getCount() 已执行了两次。我真的不明白为什么会这样。下面是被覆盖的getCount()
. mCursor
是我的适配器的光标对象。
@Override
public int getCount() {
if (mCursor != null) {
int total = mCursor.getCount();
Log.d(TAG, "Count of cursor is: " + total);
return total;
} else
Log.e(TAG, "Count of cursor is: " + 0);
return 0;
}
其次,我想从这个听众开始另一个活动。当我单击一个项目时,我得到以下异常:
08-26 14:15:20.487:调试/议程适配器(14110):游标计数为:14
08-26 14:15:20.525:调试/议程适配器(14110):游标计数为:14
08-26 14:15:20.535:调试/议程活动(14110):位置是:2
08-26 14:15:20.535:调试/议程活动(14110):ID 是:353
08-26 14:15:20.535: INFO/ActivityManager(104): 开始活动: Intent {AgendaEventActivity (has extras) }
08-26 14:15:20.575:调试/议程活动(14110):onPause
08-26 14:15:20.865:INFO/ActivityManager(104):显示的活动 AgendaEventActivity:287 毫秒(共 287 毫秒)
08-26 14:15:20.875:调试/议程适配器(14110):游标计数为:14
08-26 14:15:20.875:调试/议程适配器(14110):游标计数为:14
08-26 14:15:20.885:调试/议程适配器(14110):游标计数为:14
08-26 14:15:20.885:调试/议程适配器(14110):游标计数为:14
08-26 14:15:20.885: 调试/AndroidRuntime(14110): 关闭虚拟机
08-26 14:15:20.885: WARN/dalvikvm(14110): threadid=1: 线程以未捕获的异常退出 (group=0x40028a00) 08-26 14:15:20.905: ERROR/AndroidRuntime(14110): FATAL EXCEPTION: main 08-26 14:15:20.905: ERROR/AndroidRuntime(14110): java.lang.IllegalStateException: 这只应在光标有效时调用
因此,当我单击一个项目时执行 ,然后从单击的项目的和getCount()
遵循两个日志,然后再次调用...最后当前活动暂停,我开始的新活动得到 this ,我不明白为什么..onItemClickListener
pos
id
getCount()
IllegalStateException
对于游标,我在启动时使用了 managedquery() ..
任何帮助将不胜感激!感谢您的时间!
异常的堆栈跟踪是:
08-26 14:35:17.735:错误/AndroidRuntime(24173):致命异常:主要
08-26 14:35:17.735: ERROR/AndroidRuntime(24173): java.lang.IllegalStateException: 这只应在光标有效时调用 08-26 14:35:17.735: ERROR/AndroidRuntime(24173): at android .widget.CursorAdapter.getView(CursorAdapter.java:175)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.widget.AbsListView.obtainView(AbsListView.java:1294)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.widget.ListView.makeAndAddView(ListView.java:1727)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.widget.ListView.fillSpecific(ListView.java:1272)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.widget.ListView.layoutChildren(ListView.java:1591)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.widget.AbsListView.onLayout(AbsListView.java:1147)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.view.View.layout(View.java:7034)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.view.View.layout(View.java:7034)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.widget.RelativeLayout.onLayout(RelativeLayout.java:909)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.view.View.layout(View.java:7034)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.widget.FrameLayout.onLayout(FrameLayout.java:333)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.view.View.layout(View.java:7034)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.widget.FrameLayout.onLayout(FrameLayout.java:333)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.view.View.layout(View.java:7034)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.view.ViewRoot.performTraversals(ViewRoot.java:1049)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.view.ViewRoot.handleMessage(ViewRoot.java:1744)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.os.Handler.dispatchMessage(Handler.java:99)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.os.Looper.loop(Looper.java:143)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 android.app.ActivityThread.main(ActivityThread.java:4914)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 java.lang.reflect.Method.invokeNative(Native Method)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 java.lang.reflect.Method.invoke(Method.java:521)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-26 14:35:17.735: 错误/AndroidRuntime(24173): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-26 14:35:17.735:错误/AndroidRuntime(24173):在 dalvik.system.NativeStart.main(本机方法)
这是来自 getCount() 的 dumpStack:
08-26 14:35:17.615: WARN/System.err(24173): java.lang.Throwable: 堆栈转储
08-26 14:35:17.695:调试/dalvikvm(24173):GC_FOR_MALLOC 在 78 毫秒内释放了 19264 个对象/1052704 个字节
08-26 14:35:17.695: WARN/System.err(24173): 在 java.lang.Thread.dumpStack(Thread.java:618)
08-26 14:35:17.705: WARN/System.err(24173): 在 AgendaAdapter.getCount(AgendaAdapter.java:31)
08-26 14:35:17.705: WARN/System.err(24173): 在 android.widget.ListView.layoutChildren(ListView.java:1491)
08-26 14:35:17.705: WARN/System.err(24173): 在 android.widget.AbsListView.onLayout(AbsListView.java:1147)
08-26 14:35:17.705: WARN/System.err(24173): 在 android.view.View.layout(View.java:7034)
08-26 14:35:17.705: WARN/System.err(24173): 在 android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
08-26 14:35:17.705: WARN/System.err(24173): 在 android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
08-26 14:35:17.705: WARN/System.err(24173): 在 android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
08-26 14:35:17.705: WARN/System.err(24173): 在 android.view.View.layout(View.java:7034)
08-26 14:35:17.705: WARN/System.err(24173): 在 android.widget.RelativeLayout.onLayout(RelativeLayout.java:909)
08-26 14:35:17.705: WARN/System.err(24173): 在 android.view.View.layout(View.java:7034)
08-26 14:35:17.715: WARN/System.err(24173): 在 android.widget.FrameLayout.onLayout(FrameLayout.java:333)
08-26 14:35:17.715: WARN/System.err(24173): 在 android.view.View.layout(View.java:7034)
08-26 14:35:17.715: WARN/System.err(24173): 在 android.widget.FrameLayout.onLayout(FrameLayout.java:333)
08-26 14:35:17.715: WARN/System.err(24173): 在 android.view.View.layout(View.java:7034)
08-26 14:35:17.715: WARN/System.err(24173): 在 android.view.ViewRoot.performTraversals(ViewRoot.java:1049)
08-26 14:35:17.715: WARN/System.err(24173): 在 android.view.ViewRoot.handleMessage(ViewRoot.java:1744)
08-26 14:35:17.715: WARN/System.err(24173): 在 android.os.Handler.dispatchMessage(Handler.java:99)
08-26 14:35:17.715: WARN/System.err(24173): 在 android.os.Looper.loop(Looper.java:143)
08-26 14:35:17.715: WARN/System.err(24173): 在 android.app.ActivityThread.main(ActivityThread.java:4914)
08-26 14:35:17.715: WARN/System.err(24173): 在 java.lang.reflect.Method.invokeNative(Native Method)
08-26 14:35:17.715: WARN/System.err(24173): 在 java.lang.reflect.Method.invoke(Method.java:521)
08-26 14:35:17.715: WARN/System.err(24173): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-26 14:35:17.715: WARN/System.err(24173): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-26 14:35:17.715: WARN/System.err(24173): at dalvik.system.NativeStart.main(Native Method)
因此它是从 中调用的ListView
,但是如何onPause()
在活动之后调用它呢?