【发布时间】:2014-05-18 06:13:26
【问题描述】:
我目前正在处理一个在列表视图中显示联系人的教程中使用的项目。数据库中的所有字段都被使用并保存为字符串。自定义适配器类用于编辑和删除按钮 - 每个项目的按钮显示在列表视图上。单击编辑会导致一个单独的活动,在该活动中解析该记录的详细信息。
我添加了另一个按钮,我想在单击并重新加载活动时更新记录。当您按下按钮时,它会从 connector 方法中调用一个方法:
public void updateContact(long id, String name, String phone, String mail,
String fb, byte[] blob) {
ContentValues cv = new ContentValues();
cv.put(Contacts.NAME, name);
cv.put(Contacts.PHONE, phone);
cv.put(Contacts.MAIL, mail);
cv.put(Contacts.FB, fb);
cv.put(Contacts.IMAGE, blob);
db = sqlHp.getWritableDatabase();
db.update(Contacts.TABLE, cv, Contacts.ID + "=" + id, null);
db.close();
}
我希望phone 将字符串转换为整数,将值加 1,然后使用 contentvalues 作为字符串保存。这是我尝试过的:
public void updateContact(long id, String name, String phone,
String mail, String fb, byte[] blob) {
ContentValues cv = new ContentValues();
cv.put(Contacts.NAME, name);
int phone1 = 0;
phone1 = (Integer) cv.getAsInteger(Contacts.PHONE);
phone1++;
phone = String.valueOf(phone1);
cv.put(Contacts.PHONE, phone);
cv.put(Contacts.MAIL, mail);
cv.put(Contacts.FB, fb);
cv.put(Contacts.IMAGE, blob);
db = sqlHp.getWritableDatabase();
db.update(Contacts.TABLE, cv, Contacts.ID + "=" + id, null);
db.close();
}
这给了我一个null pointer exception 错误。我不知道从这里去哪里。
这是来自自定义适配器的方法,其中包含 onclick 方法
setPresent = (ImageButton) v.findViewById(R.id.setPresent);
setPresent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sqlCon.updateContact(id, name, phone, email, fb, image);
Intent intent = new Intent(context, MyContactsActivity.class)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
});
当我单击此按钮时,会发生空指针异常错误。这些是它标记的行:
sqlCon.updateContact(id, name, phone, email, fb, image);
- 来自自定义适配器
和
phone1 = (Integer) cv.getAsInteger(Contacts.PHONE);
- 来自连接器
【问题讨论】:
-
哪一行抛出
NullPointerException?能否请您从 LogCat 发布错误? -
这是行 'phone1 = (Integer) cv.getAsInteger(Contacts.PHONE);'我将使用 logcat 错误更新帖子
-
这里的一个明确问题是,您声明了一组
new ContentValues();,然后在很明显此时没有添加任何内容时尝试获取值Contacts.PHONE。这可能是您的错误。 -
您正在创建一个新的简历...然后您尝试获取一个值...显然它为空,因为您之前没有放入任何内容...编辑:电话太慢
-
所以最好不要在连接器类中执行此操作,最好转换为 int 并在另一个类中递增?