Je crée une base de données SQL et je base this site. Le problème est, je ne sais pas comment puis-je accéder aux méthodes de classe interne, alors que la classe externe a un constructeur privé . méthode à partir d'un autre fichier javaAccéder à une sous-classe interne avec un constructeur de classe privée d'une autre classe
public class MyDBHandler {
private MyDBHandler() {
}
public static class FeedEntry implements BaseColumns {
public static final String TABLE_NAME = "Tasks";
public static final String COLUMN_NAME_TITLE = "TASK_LABEL";
}
public class FeedReaderDbHelper extends SQLiteOpenHelper {
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "myDatabase.db";
public FeedReaderDbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public long saveTasks(String title) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(FeedEntry.COLUMN_NAME_TITLE, title);
long newRowId = db.insert(FeedEntry.TABLE_NAME, null, contentValues);
return newRowId;
}
}
}
J'essaie d'accéder saveTasks méthode (titre String) de onClick (Voir v).
J'ai essayé STH comme ceci:
MyDBHandler.FeedReaderDbHelper dbHelper = new MyDBHandler.FeedReaderDbHelper(v.getContext());
mais bien sûr, je reçois une erreur « MyDBHandler n'est pas une classe englobante ».
OU
MyDBHandler.FeedReaderDbHelper dbHelper= new MyDBHandler().new FeedReaderDbHelper(v.getContext());
mais encore une fois, studio Android ne cesse de me dire: "MyDbHandler a un accès privé"
Est-il même possible de le faire de cette façon?
Déplacez votre classe FeedReaderDbHelper dans un fichier séparé –
Pourquoi implémentez vous exactement comme une classe interne? Dans l'exemple, il s'agit clairement d'une classe distincte. –
Pourquoi ne pouvez-vous pas rendre le constructeur public? –