【发布时间】:2014-12-16 16:51:33
【问题描述】:
有人可以向我解释为什么我得到 java.lang.IllegalStateException:尝试单击按钮以从数据库中获取数据时无法执行活动方法?
我的 xml 代码有一个这样的 onClick:
<Button
android:layout_width="0dip"
android:layout_height="wrap_content"
android:text="Delete"
android:id="@+id/btnDelete"
android:layout_weight="1"
android:onClick="onClick_DeleteAll"/>
我的主要活动代码:
public void onClick_DeleteAll(View view){
DBTools dbTools = new DBTools(getApplicationContext())
float total = dbTools.total();
}
我的数据库类(DBTools.java)代码:
public float total(){
float total = 0;
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT Sum("+ PRICE +") FROM " + TABLE_ITEM_SELL, null);
if (cursor.moveToFirst()){
total = Float.parseFloat(cursor.getString(0));
}
return total;
}
我不知道出了什么问题,因为它仅在我尝试执行的方法返回数据时发生。和上面的代码一样,它返回浮点数。
错误:
java.lang.IllegalStateException: Could not execute method of the activity
at android.view.View$1.onClick(View.java:3591)
at android.view.View.performClick(View.java:4084)
at android.view.View$PerformClick.run(View.java:16966)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at android.view.View$1.onClick(View.java:3586)
at android.view.View.performClick(View.java:4084)
at android.view.View$PerformClick.run(View.java:16966)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at java.lang.StringToReal.parseFloat(StringToReal.java:285)
at java.lang.Float.parseFloat(Float.java:300)
at com.jcarlapp.carl.amystore.DBTools.total(DBTools.java:151)
at com.jcarlapp.carl.amystore.MainActivity.onClick_DeleteAll(MainActivity.java:306)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at android.view.View$1.onClick(View.java:3586)
at android.view.View.performClick(View.java:4084)
at android.view.View$PerformClick.run(View.java:16966)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
能否请您发布堆栈跟踪(logcat 输出)?我认为您的数据库有问题...
标签: android illegalstateexception