【发布时间】:2011-06-23 01:47:33
【问题描述】:
您好,我从 sqlite 检索数据和一个 Float 值并在 arraylist 中返回:
if (!cursor.isAfterLast())
{
do
{
....
rowArray.add(cursor.getFloat(2));
....
}
while (cursor.moveToNext());
}
当我尝试从列表中设置浮点变量时,浮点转换出现问题:
ArrayList<Object> row;
row = db.getNameAsArray(name);
mCurrentPrice=((Float)row.get(2)).floatValue();
此行中没有错误,但应用程序 FC。简单的浮动演员也不起作用。 谢谢任何答案。
Logcat:
02-07 22:34:19.537: ERROR/Retrieve Error(632): java.lang.ClassCastException: java.lang.String
02-07 22:34:21.217: WARN/System.err(632): java.lang.ClassCastException: java.lang.String 02-07 22:34:21.267: WARN/System.err(632): 在 com.testing.retrieveDrinkName(DatabaseActivity.java:222) 02-07 22:34:21.527: WARN/System.err(632): 在 android.os.Handler.handleCallback(Handler.java:587) 02-07 22:34:21.547: WARN/System.err(632): 在 android.os.Handler.dispatchMessage(Handler.java:92) 02-07 22:34:21.596: WARN/System.err(632): 在 android.os.Looper.loop(Looper.java:123) 02-07 22:34:21.657: WARN/System.err(632): 在 android.app.ActivityThread.main(ActivityThread.java:4363) 02-07 22:34:21.667: WARN/System.err(632): 在 java.lang.reflect.Method.invokeNative(Native Method) 02-07 22:34:21.737: WARN/System.err(632): 在 java.lang.reflect.Method.invoke(Method.java:521) 02-07 22:34:21.769: WARN/System.err(632): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 02-07 22:34:21.797: WARN/System.err(632): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 02-07 22:34:21.817: WARN/System.err(632): at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
使用 logcat 查看导致 FC 的错误。要查看 logcat,请在 eclipse 中切换到 DDMS 透视图或在命令行上运行 adb logcat。
-
那么,名为“getNameAsArray”的方法返回浮点值?为什么?
-
方法返回双精度、字符串和浮点值数组。
-
logcat 显示 java.lang.ClassCastException java.lang.String
-
既然你有一个
Objects数组,也许你最好在演员之前做一个instanceof检查?我敢打赌,你没有得到Float对象,而是试图投射其他东西。请提供您的 logcat 输出。