2014-12-27 10 views
7

Versuchen, Klasse mit SQLiteOpenHelper zu erweitern, aber dieser Fehler wird angezeigt: "Es ist kein Standardkonstruktor in android.database.sqlite.SQLitenpenhelper verfügbar "zusammen mit anderen‚nicht Symbol Kategorie lösen, Hinweis, ...‘"Es gibt keinen Standardkonstruktor in android.database.sqlite.SQLitenpenhelper" in Android Studio

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); 
    } 

Antwort

13

Sie benötigen einen expliziten Konstruktor selbst zu definieren, die den 4- oder 5-arg super Konstruktor in SQLiteOpenHelper nennt.

Zum Beispiel:

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

wo database.db ist Ihre Datenbank Dateinamen und 1 ist die Version.

+0

Ich hatte die gleiche Frage über die WebView-Klasse, aber diese beantwortete meine Frage sowieso. Vielen Dank! – Seth

2

Wenn Ihr DBHelper Kind dann diesen Beitrag Hilfe, othervise Sie bereits understandfirst es wie diese in außerhalb von Ihnen Klasse definieren können, uperside bedeutet ...

private DBHelper ourHelper; 
private final Context ourContext; 

Dann nutzen Sie diese

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); 
} 

Und dann versuchen Sie diesen Kontext für Ihre Elternklasse

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