«Конструктор по умолчанию не доступен в android.database.sqlite.SQLitepenhelper» в Android Studio

Попытка расширить класс с помощью SQLiteOpenHelper, но появляется эта ошибка: «В андроиде.database.sqlite.SQLitepenhelper нет конструктора по умолчанию», а также другие «не могут разрешить символ Категория, Примечание …»

class DbHelper extends SQLiteOpenHelper { @Override public void onCreate(SQLiteDatabase db) { db.execSQL(Category.getSql()); db.execSQL(Note.getSql()); db.execSQL(Attachment.getSql()); db.execSQL(CheckItem.getSql()); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + Category.TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + Note.TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + Attachment.TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + CheckItem.TABLE_NAME); onCreate(db); } 

Solutions Collecting From Web of "«Конструктор по умолчанию не доступен в android.database.sqlite.SQLitepenhelper» в Android Studio"

Вам нужно определить явный конструктор самостоятельно, который вызывает super конструктор 4- или 5-arg в SQLiteOpenHelper .

Например:

 public DbHelper(Context context) { super(context, "database.db", null, 1); } 

Где database.db – ваше имя файла базы данных, а 1 – версия.

Если ваш ребенок DBHelper то этот пост поможет, othervise, вы можете все понять. Сначала определите его, как этот, вне вашего класса, означает uperside …

 private DBHelper ourHelper; private final Context ourContext; 

Затем используйте это

 class DbHelper extends SQLiteOpenHelper { public DBHelper(Context context) { super(context, DB_NAME, null, DB_VIRSION); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(Category.getSql()); db.execSQL(Note.getSql()); db.execSQL(Attachment.getSql()); db.execSQL(CheckItem.getSql()); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + Category.TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + Note.TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + Attachment.TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + CheckItem.TABLE_NAME); onCreate(db); } 

И затем попробуйте этот контекст для вашего родительского класса

 public MyDatabase(Context c){ ourContext=c; }