私は Android プラットフォーム用のゲームを作成しており、複数のアクティビティ (実績、サウンドのオン/オフなど) からいくつかの情報にアクセスする必要があります。あるアクティビティから別のアクティビティに個々の値を渡すことができることはわかっていますが、どのアクティビティからでも変数にアクセスできるデータベースまたは何かのように設定できる方法はありますか?
4 に答える
はい、SQLite を使用してデータを永続化できます。他の選択肢があります: http://developer.android.com/guide/topics/data/data-storage.htmlデータの複雑さに大きく依存します。もう 1 つのアプローチは、アクティビティ間で Serializable または Parcelable オブジェクトとしてデータを渡すことですが、任意のアクティビティから新たにデータをクエリできるようにする場合は、データをシリアル化してディスクに書き込むための sqlite db または何らかのメカニズムが必要になります。
これを行う簡単な方法として、共有設定を使用できます。
ドキュメントには次のように記載されています。
SharedPreferences クラスは、プリミティブ データ型の永続的なキーと値のペアを保存および取得できる一般的なフレームワークを提供します。SharedPreferences を使用して、boolean、float、int、long、string などのプリミティブ データを保存できます。このデータは、ユーザー セッション間で保持されます (アプリケーションが強制終了された場合でも)。
以下は、ドキュメントのコードです。
public class Calc extends Activity {
public static final String PREFS_NAME = "MyPrefsFile";
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
. . .
// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
setSilent(silent);
}
@Override
protected void onStop(){
super.onStop();
// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);
// Commit the edits!
editor.commit();
}
}
データを保存する他の方法については、Android サイトに非常に優れたチュートリアルがあります- http://developer.android.com/guide/topics/data/index.html
これを達成するには多くの方法があります。SQLite データベースをセットアップしたり、SharedPreferences を使用したり、startActivityForResult() を Intent と組み合わせて使用したりできます。調査したい場合は、これらすべてが開発者のサイトで十分に文書化されています。
アプリの要件によって異なります。通常、データは「インテントの一部として送信されるエクストラ」を介して 2 つのアクティビティ間で共有されます。
複数のアクティビティでデータを共有したい場合は、1. 設定 - アプリケーションの設定を使用 (アプリ ディレクトリに保存された XML ファイル) 2. データベース - Android コンテンツ プロバイダー/リゾルバーを使用