尝试调用虚拟方法' boolean ...'在空对象引用

时间:2016-02-15 03:25:29

标签: java android sqlite

我正在创建一个函数,通过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方法,其目的是检查是否存在将电子邮件作为参数传入的现有记录?我已检查并记录,我的电子邮件值不为空。

0 个答案:

没有答案
相关问题