我正在创建一个函数,通过webservice检索联系人,但我想创建要添加到SQLite数据库中的书签/收藏联系人。在我添加收藏夹并返回活动后,我需要传递联系人详细信息以确定联系人是否已被标记为收藏夹,如果是,我的FloatingActionButton将具有某种设置颜色。但是(因为我首先使用web服务来检索详细信息),所以我在异步任务的onPostExecute
方法中执行了这部分代码。它应该传递给我的SQLite数据库帮助程序中的方法,以检查该联系人的电子邮件是否存在,如果它存在,我的FloatingActionButton是红色的,如果不存在,它仍然是我应用程序的主要颜色。
这是我的onPostExecute中的代码
// check whether fav is selected
boolean found;
if (tvConEmail.getText().toString() != null) {
try {
found = db.findFavByEmail(tvConEmail.getText().toString());
if(found){
favSelected = true;
}
} catch (NullPointerException e) {
e.printStackTrace();
favSelected = false;
}
}
但是,无论收藏夹是否在数据库中,我都会捕获NullPointerException。这是我在数据库助手中的方法
public boolean findFavByEmail(String email) {
boolean exists = true;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_FAVORITES,
COLUMNS,
"email = ?",
new String[]{email},
null, // group by
null, // having
null, // order by
null); // limit
exists = (cursor.getCount() >0);
cursor.close();
return exists;
}
如何在没有NullPointerException的情况下解决此问题并检索布尔值found
?或者我的问题可能是findFavByEmail
方法,其目的是检查是否存在将电子邮件作为参数传入的现有记录?我已检查并记录,我的电子邮件值不为空。