Sto usando OrmLite 4.47. Ho seguito molti tutorial e ho letto altre domande su StackOverflow, ma non riesco a capire come risolvere questo problema.Orm Lite - Impossibile trovare il costruttore pubblico che abbia un singolo argomento (Context) per la classe helper
che è il messaggio completo
05-15 16:36:13.805: E/AndroidRuntime(15382): Caused by: java.lang.IllegalStateException: Could not find public constructor that has a single (Context) argument for helper class class com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper
05-15 16:36:13.805: E/AndroidRuntime(15382): Caused by: java.lang.NoSuchMethodException: <init> [class android.content.Context]
Questo è il mio databaseHelper Classe
public class MyDatabaseHelper extends OrmLiteSqliteOpenHelper {
// name of the database file for your application -- change to something
// appropriate for your app
private static final String DATABASE_NAME = "databas.db";
// any time you make changes to your database, you may have to increase the
// database version
private static final int DATABASE_VERSION = 1;
//genera molte eccezioni
private Dao<Truck, Integer> truckDao = null;
//genera una sola eccezione a runtime
private RuntimeExceptionDao<Truck, Integer> truckRuntimeDao=null;
public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
// TODO Auto-generated method stub
try {
TableUtils.clearTable(connectionSource, Truck.class);
} catch (java.sql.SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int OldVersion,
int newVersion) {
// TODO Auto-generated method stub
try {
TableUtils.dropTable(connectionSource, Truck.class, true);
onCreate(database,connectionSource);
} catch (java.sql.SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Dao<Truck, Integer> getTruckDao() throws java.sql.SQLException{
if(truckDao==null){
truckDao=getDao(Truck.class);
}
return truckDao;
}
public RuntimeExceptionDao<Truck, Integer> getTruckRuntimeExceptionDao(){
if(truckRuntimeDao==null){
truckRuntimeDao=getRuntimeExceptionDao(Truck.class);
}
return truckRuntimeDao;
}
}
E ho avuto il problema quando nella mia attività cerco di farlo
MyDatabaseHelper helper = OpenHelperManager.getHelper(this,MyDatabaseHelper.class);
RuntimeExceptionDao<Truck, Integer> truckDao = helper.getTruckRuntimeExceptionDao();
Così la banca dati la classe helper è pubblica e la classe Activity estende Activiy.