私は一生の間、Androidアプリケーションの複数のアクティビティを介してSQLiteDBにアクセスする方法を理解できません。アプリケーションクラスを使ってみましたが、うまくいきません。誰かがこれがどのように機能するかの例を教えてもらえますか?基本的にタブバーを設定しており、各タブからDBにアクセスする必要があります。
ありがとう
多分これはあなたが始めることができます:
private MessagesDatabaseAdapter mDatabaseAdapter;
...
private void someMethod(Context context) {
mDatabaseAdapter.open();
mDatabaseAdapter.insertMessage(timestamp, number, body);
mDatabaseAdapter.close();
}
DBClassで
/*Inserts a message into the db */
public void insertMessage(long timestamp, String number, String body) {
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_TIMESTAMP, timestamp);
initialValues.put(KEY_NUMBER, number);
initialValues.put(KEY_BODY, body);
db.insert(Constants.DATABASES_TABLE_MESSAGES, null, initialValues);
}
/* opens the database */
public MessagesDatabaseAdapter open() throws SQLException {
db = DBHelper.getWritableDatabase();
return this;
}
/* closes the database */
public void close() {
DBHelper.close();
}
このチュートリアルは非常に優れていますが、基本を理解できると言っていることとは異なります。
DBクラスをシングルトンにすると、すべてのアクティビティから使用できるようになります。データベースを閉じないでください。アプリのプロセスが終了すると自動的に閉じられます。
メモ帳のチュートリアルを参照してください。
具体的には、このページでは、作成したDBAdapterヘルパークラスの使用について説明します。
NotesDbAdapterのコンストラクターは、Androidオペレーティングシステムのさまざまな側面と通信できるようにするコンテキストを取ります。これは、Androidシステムに何らかの方法でアクセスする必要があるクラスでは非常に一般的です。ActivityクラスはContextクラスを実装するため、通常、Contextが必要な場合は、Activityからこれを渡すだけです。
コンテキストを渡して、任意のアクティビティからNotesDbAdapterをインスタンス化して使用できます。