SQLite DatabaseUtils.queryNumEntries不适用于实际设备,但适用于模拟器

时间:2013-08-15 13:08:38

标签: android sqlite

我使用以下方法计算我的行

long numRows = DatabaseUtils.queryNumEntries(ourDatabase, "fuel_table");

列中的条目
 long mileagenum = DatabaseUtils.queryNumEntries(ourDatabase, FUEL_DATABASE_TABLE, KEY_MILEAGE);

两种方法在模拟器上都能正常工作,但在真实设备上出错...

任何想法都会出错? 谢谢。

我收到错误日志: -

java.lang.NoSuchMethodError: android.database.DatabaseUtils.queryNumEntries
at com.poojag.fuelcheck.FuelStoredInfo.getAvgMileage(FuelStoredInfo.java:252)
at com.poojag.fuelcheck.Prediction.onFocusChange(Prediction.java:199)
at android.view.View.onFocusChanged(View.java:2742)
at android.widget.TextView.onFocusChanged(TextView.java:6957)
at android.view.View.handleFocusGainInternal(View.java:2565)
at android.view.View.requestFocus(View.java:3720)
at android.view.View.requestFocus(View.java:3671)
at android.view.View.requestFocus(View.java:3649)
at android.view.View.onTouchEvent(View.java:4445)
at android.widget.TextView.onTouchEvent(TextView.java:7130)
at android.widget.EditText.onTouchEvent(EditText.java:143)
at android.view.View.dispatchTouchEvent(View.java:3885)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1750)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1135)
at android.app.Activity.dispatchTouchEvent(Activity.java:2096)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1734)
at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2216)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1887)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
at dalvik.system.NativeStart.main(Native Method)

1 个答案:

答案 0 :(得分:5)

API级别11中引入了

queryNumEntries with selection。您的2.3.6设备正在运行API级别10。

您可以使用常规COUNT(*)选择查询替换它,例如:

long mileagenum = DatabaseUtils.longForQuery(ourDatabase,
        "SELECT COUNT(*) FROM " + FUEL_DATABASE_TABLE + " WHERE " + KEY_MILEAGE, null);