我希望這是真正基本的東西,我只是沒有看到 - 但我想知道爲什麼以下調用更新客戶端的方法的語句在返回時導致NullPointerException更新方法的線。SQLite更新行上的NullPointerException
如果有助於知道,我有插入和選擇工作正常,並通過調試我知道更新語句有三個變量存儲之前執行,但從未執行。
方法調用
public void onSaveButtonClick(View v) {
DBAdapter db = new DBAdapter(this);
// Create and set fields
EditText nameField = (EditText) findViewById(R.id.EditText_Name);
EditText emailField = (EditText) findViewById(R.id.EditText_Email);
name = nameField.toString();
email = emailField.toString();
db.updateClient(_id, "Test Name", "Test Email");
Toast.makeText(PTViewClient.this,"TODO: Save Button Functionality", Toast.LENGTH_SHORT).show();
}
更新客戶端的方法拋出NullPointerException異常
public boolean updateClient(long clientID, String name, String email)
{
ContentValues args = new ContentValues();
args.put(KEY_CLIENT_NAME, name);
args.put(KEY_CLIENT_EMAIL, email);
return db.update(DATABASE_CLIENTS, args, KEY_CLIENT_ID + "=" + clientID, null) > 0;
}
堆棧跟蹤
05-15 12:47:02.978: E/AndroidRuntime(22110): FATAL EXCEPTION: main
05-15 12:47:02.978: E/AndroidRuntime(22110): java.lang.IllegalStateException: Could not execute method of the activity
05-15 12:47:02.978: E/AndroidRuntime(22110): at android.view.View$1.onClick(View.java:3599)
05-15 12:47:02.978: E/AndroidRuntime(22110): at android.view.View.performClick(View.java:4204)
05-15 12:47:02.978: E/AndroidRuntime(22110): at android.view.View$PerformClick.run(View.java:17355)
05-15 12:47:02.978: E/AndroidRuntime(22110): at android.os.Handler.handleCallback(Handler.java:725)
05-15 12:47:02.978: E/AndroidRuntime(22110): at android.os.Handler.dispatchMessage(Handler.java:92)
05-15 12:47:02.978: E/AndroidRuntime(22110): at android.os.Looper.loop(Looper.java:137)
05-15 12:47:02.978: E/AndroidRuntime(22110): at android.app.ActivityThread.main(ActivityThread.java:5041)
05-15 12:47:02.978: E/AndroidRuntime(22110): at java.lang.reflect.Method.invokeNative(Native Method)
05-15 12:47:02.978: E/AndroidRuntime(22110): at java.lang.reflect.Method.invoke(Method.java:511)
05-15 12:47:02.978: E/AndroidRuntime(22110): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-15 12:47:02.978: E/AndroidRuntime(22110): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-15 12:47:02.978: E/AndroidRuntime(22110): at dalvik.system.NativeStart.main(Native Method)
05-15 12:47:02.978: E/AndroidRuntime(22110): Caused by: java.lang.reflect.InvocationTargetException
05-15 12:47:02.978: E/AndroidRuntime(22110): at java.lang.reflect.Method.invokeNative(Native Method)
05-15 12:47:02.978: E/AndroidRuntime(22110): at java.lang.reflect.Method.invoke(Method.java:511)
05-15 12:47:02.978: E/AndroidRuntime(22110): at android.view.View$1.onClick(View.java:3594)
05-15 12:47:02.978: E/AndroidRuntime(22110): ... 11 more
05-15 12:47:02.978: E/AndroidRuntime(22110): Caused by: java.lang.NullPointerException
05-15 12:47:02.978: E/AndroidRuntime(22110): at com.personaltrainer.DBAdapter.updateClient(DBAdapter.java:173)
05-15 12:47:02.978: E/AndroidRuntime(22110): at com.personaltrainer.PTViewClient.onSaveButtonClick(PTViewClient.java:124)
05-15 12:47:02.978: E/AndroidRuntime(22110): ... 14 more
我想你'db'是'null'和使用'nameField.getText()的toString(); '而不是直接在Edittext上調用'toString()'。 'toString()'Edittext將給出Edittext的字符串表示,但不包含原始文本 – Pragnani