我对Android比较陌生,而且我在通过数据库的过程中遇到了一些困难,所以我们非常感谢任何准则!这就是〜
//Random Fragment that inserts data to the databaase
mWorkoutData = new WorkoutData();
mDBTools = new DBTools(getActivity());
HashMap<String, String> queryValuesMap = new HashMap<String, String>();
queryValuesMap.put("comments", mWorkoutData.getComments());
mDBTools.insertWorkoutData(queryValuesMap);
WorkoutData是模型类,但它不会设法将任何数据插入数据库,如果我传递一个Edittext作为参数,一切都很好!
非常感谢有关如何解决此问题的任何指导或见解!
修改
DBTool中
public void insertWorkoutData(HashMap<String, String> queryValues) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("comments", queryValues.get("comments"));
db.insert("workouts", null, values);
db.close();
}
这是DBTools插入这个特定数据的相应方法,我相信DBTools类工作正常,因为我能够在listview上查看数据,以防我传递类似
的内容 queryValuesMap.put("comments", EditText.getText().toString());
而不是
queryValuesMap.put("comments", mWorkoutData.getComments());
如上所述。
EDIT2
//Random Fragment number 2 prior to random Fragment of the code above
mWorkoutData.setComments(mTrainingEditText.getText().toString());
答案 0 :(得分:0)
您构建了一个workoutData
对象,然后在其上调用了getComments
,但我认为此时注释为空。在尝试将注释读回之前,您需要为注释设置值。
答案 1 :(得分:0)
对你的问题不是一个真正的答案,但我想向你提出的建议比我在评论中所做的更长。
每当您使用数据库时,都应该使用契约类来存储常量。这将使您的代码更容易编写,并且更不容易出现拼写错误。这甚至可能是你的问题。但基本上你只是做一个类似
的课程public class WorkoutDatabaseContract {
public static final String DB_NAME = "fitness"
public static final String TABLE_WORKOUTS = "workouts"
...
public static final String FIELD_COMMENTS = "comments"
...
}
然后您对数据库的调用看起来像
values.put(WorkoutDatabaseContract.FIELD_COMMENTS, queryValues.get(WorkoutDatabaseContract.FIELD_COMMENTS));
-or-
queryValuesMap.put(WorkoutDatabaseContract.FIELD_COMMENTS, workoutData.getComments);
它不那么紧凑,但你输入的次数较少,因为它会自动为你完成,而你不必依靠你的打字能力就能在任何地方找到合适的字段。此外,如果你有任何改变,你只需要在一个地方改变它。