0

我尝试调用一个方法并从 android 中的另一个活动写入我的数据库,但我的应用程序崩溃,因为它无法写入。我的活动没有 On Create,因为它不需要它。因此我有这个代码: DB db = new DB(ServSearcher.this);我想让我访问我的数据库,然后我使用下面的方法,如:

List<Contact> contacts = db.getAllContacts();
for (Contact cn : contacts) {
    db.addContact(new Contact(var, getTime()));

这是我的 logcat 错误:

java.lang.NullPointerException
        at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:268)
        at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
        at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
        at com.android.SecondActivity.DB.getAllContacts(DB.java:88)
        at com.android.SecondActivity.ServSearcher$5.onAvailable(ServSearcher.java:189)

我认为很明显我的应用程序无法写入数据库,所以这条线是错误DB db = new DB(ServSearcher.this);的,或者至少不给我访问权限,有什么想法吗?

在 V_J 评论后编辑:

这是我在 DB 上的方法

public List<Contact> getAllContacts() {

        List<Contact> contactList = new ArrayList<Contact>();
    // Select All Query
    String selectQuery = "SELECT  * FROM " + TABLE_CONTACTS;

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            Contact contact = new Contact();
            contact.setTime(cursor.getInt(0));
            contact.setName(cursor.getString(1));
            // Adding contact to list
            contactList.add(contact);
        } while (cursor.moveToNext());
    }

    // return contact list
    return contactList;
}
4

1 回答 1

2

我认为你可以用单例模式解决你的问题,我在下面留下一个链接来解释你的解释。

https://en.wikipedia.org/wiki/Singleton_pattern

于 2015-09-23T12:15:21.927 回答