在我的應用程序中,我有一個列表,顯示每個病人的醫療記錄,列表顯示了他們的名字,治療日期。我希望能夠點擊一個特定的條目,並讓它進入編輯屏幕。綁定值在索引1爲空
該應用程序正確地增加了新的條目,它正確地列出條目,但是當我從列表中選擇一個條目我得到的無法啓動的活動和消息是綁定值索引1處爲null
我的代碼如下所示
要建立我從
public void fillMedicalList(String editPatientToGet){
//sql Query
SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
queryBuilder.setTables(Medical.MEDICAL_TABLE_NAME);
// build the return columns
String asColumnsToReturn[]= {
Medical.MEDICAL_TABLE_NAME + "." + Medical.MEDICAL_PATIENTID,
Medical.MEDICAL_TABLE_NAME + "." + Medical.MEDICAL_PATIENT_GROUP,
Medical.MEDICAL_TABLE_NAME + "." + Medical.MEDICAL_TREATMENT_DATE,
Medical.MEDICAL_TABLE_NAME + "." + Medical.MEDICAL_TREATMENT,
Medical.MEDICAL_TABLE_NAME + "." + Medical._ID};
//end of build columns to return
//build the where clause - find entries based on patient id
String valueToFind[] = {editPatientToGet};
//build the cursor
mCursor = queryBuilder.query(mDB, asColumnsToReturn, Medical.MEDICAL_PATIENTID + "=?", valueToFind,
null, null, null);
//manage the cursor
startManagingCursor(mCursor);
//use an adapter to bind the data to the listview
MedicalListAdapter adapter = new MedicalListAdapter(this, mCursor);
ListView av = (ListView) findViewById(R.id.medical_list);
av.setAdapter(adapter);
選擇列表現在我已經開始留意項目的列表
上點擊此時我的Log.i信息顯示它有正確的記錄ID。
現在我editMedical(editMedicalid)代碼如下
//we've clicked on a patient in the List list and now we're editing it
public void editMedical(Long id){
String astrArgs[] = {id.toString()};
String EditColumnsToReturn[]={
Medical.MEDICAL_TABLE_NAME + "." + Medical.MEDICAL_PATIENTID,
Medical.MEDICAL_TABLE_NAME + "." + Medical.MEDICAL_PATIENT_GROUP,
Medical.MEDICAL_TABLE_NAME + "." + Medical.MEDICAL_TREATMENT_DATE,
Medical.MEDICAL_TABLE_NAME + "." + Medical.MEDICAL_TREATMENT,
Medical.MEDICAL_TABLE_NAME + "." + Medical._ID};
Cursor c = mDB.query(Medical.MEDICAL_TABLE_NAME, EditColumnsToReturn,
Medical._ID + "=?", astrArgs, null, null, null, null);
c.moveToFirst();
final String strMedicalName =
c.getString(c.getColumnIndex(Medical.MEDICAL_PATIENTID));
Log.i("Patient's Name Is", strMedicalName);
Log.d(DEBUG_TAG,strMedicalName);
final String strMedicalType =
c.getString(c.getColumnIndex(Medical.MEDICAL_PATIENT_GROUP));
Log.i("what group", strMedicalType);
Log.d(DEBUG_TAG,strMedicalType);
final String strMedicalTreatmentDate =
c.getString(c.getColumnIndex(Medical.MEDICAL_TREATMENT_DATE));
Log.i("date", strMedicalTreatmentDate);
Log.d(DEBUG_TAG,strMedicalTreatmentDate);
final String strMedicalTreatment =
c.getString(c.getColumnIndex(Medical.MEDICAL_TREATMENT));
Log.i("treatment was", strMedicalTreatment);
Log.d(DEBUG_TAG,strMedicalTreatment);
final Long MedicalId =
c.getLong(c.getColumnIndex(Medical._ID));
String CurrentPatient = String.valueOf(MedicalId);
Log.i("Patient ID is", CurrentPatient);
Intent editMedical = new Intent(MedicalListActivity.this,
EditMedicalActivity.class);
editMedical.putExtra("patientName", strMedicalName);
editMedical.putExtra("patientGroup", strMedicalType);
editMedical.putExtra("treatmentDate", strMedicalTreatmentDate);
editMedical.putExtra("medicalTreatment", strMedicalTreatment);
String strCurrentPatient = String.valueOf(MedicalId);
editMedical.putExtra("medicalId", strCurrentPatient);
MedicalListActivity.this.startActivity(editMedical);
} //End of getting data needed to edit the record
我log.i顯示正在收集正確的數據,但在這一點上,我得到的錯誤,它不能啓動我EditMedicalActivity因爲綁定值在索引1爲空
我已閱讀並重讀我的代碼,無法找到我的錯誤。
logcat的
02-15 15:33:35.769: E/AndroidRuntime(20339): FATAL EXCEPTION: main
02-15 15:33:35.769: E/AndroidRuntime(20339): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.agmsi.medical/com.agmsi.medical.EditMedicalActivity}: java.lang.IllegalArgumentException: the bind value at index 1 is null
02-15 15:33:35.769: E/AndroidRuntime(20339): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
02-15 15:33:35.769: E/AndroidRuntime(20339): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
02-15 15:33:35.769: E/AndroidRuntime(20339): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
02-15 15:33:35.769: E/AndroidRuntime(20339): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
02-15 15:33:35.769: E/AndroidRuntime(20339): at android.os.Handler.dispatchMessage(Handler.java:99)
02-15 15:33:35.769: E/AndroidRuntime(20339): at android.os.Looper.loop(Looper.java:130)
02-15 15:33:35.769: E/AndroidRuntime(20339): at android.app.ActivityThread.main(ActivityThread.java:3687)
02-15 15:33:35.769: E/AndroidRuntime(20339): at java.lang.reflect.Method.invokeNative(Native Method)
02-15 15:33:35.769: E/AndroidRuntime(20339): at java.lang.reflect.Method.invoke(Method.java:507)
02-15 15:33:35.769: E/AndroidRuntime(20339): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
02-15 15:33:35.769: E/AndroidRuntime(20339): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
02-15 15:33:35.769: E/AndroidRuntime(20339): at dalvik.system.NativeStart.main(Native Method)
02-15 15:33:35.769: E/AndroidRuntime(20339): Caused by: java.lang.IllegalArgumentException: the bind value at index 1 is null
02-15 15:33:35.769: E/AndroidRuntime(20339): at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:237)
02-15 15:33:35.769: E/AndroidRuntime(20339): at android.database.sqlite.SQLiteQuery.bindString(SQLiteQuery.java:185)
02-15 15:33:35.769: E/AndroidRuntime(20339): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:48)
02-15 15:33:35.769: E/AndroidRuntime(20339): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1356)
02-15 15:33:35.769: E/AndroidRuntime(20339): at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:330)
02-15 15:33:35.769: E/AndroidRuntime(20339): at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:280)
02-15 15:33:35.769: E/AndroidRuntime(20339): at com.agmsi.medical.MedicalListActivity.fillMedicalList(MedicalListActivity.java:85)
02-15 15:33:35.769: E/AndroidRuntime(20339): at com.agmsi.medical.MedicalListActivity.onCreate(MedicalListActivity.java:42)
02-15 15:33:35.769: E/AndroidRuntime(20339): at com.agmsi.medical.EditMedicalActivity.onCreate(EditMedicalActivity.java:41)
02-15 15:33:35.769: E/AndroidRuntime(20339): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-15 15:33:35.769: E/AndroidRuntime(20339): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
02-15 15:33:35.769: E/AndroidRuntime(20339): ... 11 more
好,因爲這部分之後,我想這是部分
Intent editMedical = new Intent(MedicalListActivity.this,
EditMedicalActivity.class);
editMedical.putExtra("patientName", strMedicalName);
editMedical.putExtra("patientGroup", strMedicalType);
editMedical.putExtra("treatmentDate", strMedicalTreatmentDate);
editMedical.putExtra("medicalTreatment", strMedicalTreatment);
String strCurrentPatient = String.valueOf(MedicalId);
editMedical.putExtra("medicalId", strCurrentPatient);
MedicalListActivity.this.startActivity(editMedical);
右後這個錯誤顯示發生錯誤 - 所以我不知道這是否是這裏或其他地方的東西,這就是爲什麼我發佈了涉及兩個區域的代碼
你可以請發佈logcat輸出嗎? – 2013-02-15 21:54:04
請突出顯示代碼中反映錯誤的重要行。有太多的代碼需要查看,我們不會計算行數... – JoxTraex 2013-02-15 22:04:20
@Hank。看看我的帖子 – 2013-02-15 22:56:29