我正在尝试通过内容提供程序从SQLite中保存表单中的数据,但它不起作用,Logcat中没有显示错误,但是当我使用此检查数据库时:
https://github.com/sanathp/DatabaseManager_For_Android
我可以看到数据没有保存... 这是使用ClickListener进行保存的按钮代码:
mSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(TextUtils.isEmpty(mdateEditText.getText().toString()) || TextUtils.isEmpty(mValueEditText.getText().toString())){
Toast.makeText(getApplicationContext(), "Date and Value fields can not be empty.", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getApplicationContext(), "Form Saved.", Toast.LENGTH_LONG).show();
mdateEditText.setText("");
mValueEditText.setText("");
mcommentaryEditText.setText("");
setResult(RESULT_OK);
}
}
});
这是我的代码从表单中获取数据:
private void saveForm(){
//Retriving selected item from spinners
String time = (String) mTime.getSelectedItem();
String prepost= (String) mPrePost.getSelectedItem();
String others= (String) mOthers.getSelectedItem();
//Toast.makeText(getApplicationContext(), "SAVEFORM: TIME SELECCIONADO: " +time, Toast.LENGTH_LONG).show();
//Toast.makeText(getApplicationContext(), "SAVEFORM: prepost SELECCIONADO: " +prepost, Toast.LENGTH_LONG).show();
//Toast.makeText(getApplicationContext(), "SAVEFORM: OTHER SELECCIONADO: " +others, Toast.LENGTH_LONG).show();
String dateEditText = mdateEditText.getText().toString();
String commentaryEditText = mcommentaryEditText.getText().toString();
String hemoValue = mValueEditText.getText().toString();
//If form is empty then we can't save the form
if(hemoValue.length() == 0 && dateEditText.length() == 0 ){
return;
}
float hemoRealValue = Float.parseFloat(hemoValue);
ContentValues values = new ContentValues();
values.put(FormTable.COLUMN_DATE, dateEditText);
values.put(FormTable.COLUMN_TIME, time);
values.put(FormTable.COLUMN_PREPOST, prepost);
values.put(FormTable.COLUMN_OTHERS,others);
values.put(FormTable.COLUMN_VALUES,hemoRealValue);
values.put(FormTable.COLUMN_COMMENTARY,commentaryEditText);
//
// if(formUri==null){
formUri = getContentResolver().insert(ContentProviderDB.CONTENT_URI,values);
// }else{
// getContentResolver().update(formUri,values,null,null);
// }
这是使用insert方法保存数据的内容提供程序的代码:
@Nullable
@Override
public Uri insert(Uri uri, ContentValues values) {
int uriType = sUriMatcher.match(uri);
SQLiteDatabase db = sqlite.getWritableDatabase();
long id=0;
switch(uriType){
case SINGLE_VALUE:
id=db.insert(FormTable.TABLE_FORM,null,values);
break;
default:
throw new IllegalArgumentException("Unknown Uri: " + uri);
}
getContext().getContentResolver().notifyChange(uri,null);
return Uri.parse(BASE_PATH + "/" + id);
}
我正在做的一切都好,但它不是保存数据,可能是什么问题?非常感谢
答案 0 :(得分:0)
根据您的代码,您必须在onClick函数中调用saveForm()
public void onClick(View v) {
if(TextUtils.isEmpty(mdateEditText.getText().toString()) || TextUtils.isEmpty(mValueEditText.getText().toString())){
Toast.makeText(getApplicationContext(), "Date and Value fields can not be empty.", Toast.LENGTH_LONG).show();
}else{
saveForm();
Toast.makeText(getApplicationContext(), "Form Saved.", Toast.LENGTH_LONG).show();
mdateEditText.setText("");
mValueEditText.setText("");
mcommentaryEditText.setText("");
setResult(RESULT_OK);
}
}