SQLiteDatabase.OpenDatabase是Fragment中的NullPointerException

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLiteDatabase.OpenDatabase是Fragment中的NullPointerException相关的知识,希望对你有一定的参考价值。

这在片段onCreateView之外工作,但不在静态方法中。

SQLiteDatabase checkDB = SQLiteDatabase.openDatabase(path_to + DATABASE_NAME, null, SQLiteDatabase.OPEN_READWRITE);

我有一个DataBaseHelper,它在静态方法之外初始化为

FeedReaderHelper mHelper = new FeedReaderHelper(this);

而对于片段,我使用

if (getActivity() != null)
    FeedReaderHelper xHelper = new FeedReaderHelper(getActivity());
else
    Log.d(TAG, "Null");

我知道getActivity不是null,即使我只是尝试打开和关闭数据库,错误仍然存​​在。我的logcat是这样的:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference

我不知道Resources在这里的含义以及如何完全避免错误。

另外,我在调用onContentView之前尝试打开数据库;它仍然在checkDB.close解析为NullPointer

答案

我只使用FeedReederHelper来调用db.exec()语句,因此在checkDB调用中没有硬编码路径的情况下,应该使用相同的Helper来打开数据库。 mHelper.getWriteableDatabase();解决了这个问题。

以上是关于SQLiteDatabase.OpenDatabase是Fragment中的NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章