Я написал специальный contentprovider, который создает базу данных в sqlite3 с отдельной таблицей "user_authentication".
В то время как db и table были созданы по их соответствующим методам onCreate()
, я получаю NullPointerException
в методе overriden insert. Ниже приведен метод:
public Uri insert(Uri uri, ContentValues initialvalues){
SQLiteDatabase sqlitedb = dbHelper.getWritableDatabase();
if(sUriMatcher.match(uri)!= TABLE){
throw new IllegalArgumentException("Unkown Uri"+uri);
}
ContentValues values;
if(initialvalues != null){
values = new ContentValues(initialvalues);
}
else{
values = new ContentValues();
}
long rowId = sqlitedb.insert(AUTHENTICATION_TABLE_NAME, "", values);
if(rowId>0){
Uri uril = ContentUris.withAppendedId(User.CONTENT_URI, rowId);
getContext().getContentResolver().notifyChange(User.CONTENT_URI, null);
sqlitedb.close();
return uril;
}
throw new SQLException("Failed to insert row into User_Authentication : " + uri);
}
Во время отладки, я вижу, что таблица вставляется с "значениями", но когда она достигает getContext()
, она возвращает null и, следовательно, ошибку.
Мне интересно, почему getContext()
сохраняет null, так как пользовательский класс contentprovider расширяет android.content.ContentProvider
;
Может ли кто-нибудь помочь мне в этом. BTW, я использую 2.3 sdk
Спасибо, Раджа Чандра Рангиени
getApplicationContext() должен работать вместо getContext().