Android の PreferenceActivity から SharedPreferences を取得するにはどうすればいいですか? 質問する

Android の PreferenceActivity から SharedPreferences を取得するにはどうすればいいですか? 質問する

私は、アプリケーションの設定を表示するために PreferenceActivity を使用しています。設定を xml ファイルで拡張しているので、onCreate (および完全なクラス メソッド) は次のようになります。

public class FooActivity extends PreferenceActivity {
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        addPreferencesFromResource(R.xml.preference);
    }
}

PreferenceActivity の Javadoc プリファレンスフラグメントと述べています

これらの設定は、ユーザーが操作すると自動的に SharedPreferences に保存されます。このアクティビティの設定階層で使用される SharedPreferences のインスタンスを取得するには、このアクティビティと同じパッケージ内のコンテキストを使用して getDefaultSharedPreferences(android.content.Context) を呼び出します。

しかし、別のアクティビティのSharedPreferenceの名前を取得するにはどうすればいいでしょうか?

getSharedPreferences(name, mode)

他のアクティビティでは、PreferenceActivity によって使用された SharedPreference の名前が必要です。名前は何ですか、またはそれを取得するにはどうすればよいですか?

ベストアンサー1

import android.preference.PreferenceManager;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
// then you use
prefs.getBoolean("keystring", true);

アップデート

によると共有設定 | Android 開発者チュートリアル (パート 13)サイ・ギータMN著、

多くのアプリケーションでは、特定のアプリケーションまたはアクティビティの設定に関するユーザーの好みを取得する方法を提供しています。これをサポートするために、Android はシンプルな API セットを提供しています。

設定は通常、名前と値のペアです。これらは、アプリケーション内のさまざまなアクティビティ間で「共有設定」として保存できます (現時点ではプロセス間で共有することはできません)。または、アクティビティに固有のものを保存する必要のあるものである場合もあります。

  1. 共有設定: 共有設定は、アプリケーションのすべてのコンポーネント (アクティビティ、サービスなど) で使用できます。

  2. アクティビティ処理の設定: これらの設定は特定のアクティビティ内でのみ使用でき、アプリケーションの他のコンポーネントでは使用できません。

共有設定:

共有設定は、クラスgetSharedPreferencesのメソッドを使用して管理されますContext。設定はデフォルトのファイル(1)に保存されるか、設定を参照するために使用するファイル名(2)を指定できます。

(1)ファイル名を指定せずにデフォルトモードで使用することを推奨します。

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);

(2)ファイル名を指定してインスタンスを取得する方法

public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);

MODE_PRIVATEは、設定の動作モードです。これはデフォルトのモードで、作成されたファイルは呼び出しアプリケーションによってのみアクセスされます。サポートされている他の 2 つのモードは、MODE_WORLD_READABLEとですMODE_WORLD_WRITEABLEMODE_WORLD_READABLE他のアプリケーションでは、作成されたファイルを読み取ることはできますが、変更することはできません。の場合、MODE_WORLD_WRITEABLE他のアプリケーションにも、作成されたファイルへの書き込み権限があります。

最後に、設定インスタンスを取得したら、設定から保存された値を取得する方法は次のとおりです。

int storedPreference = preferences.getInt("storedInt", 0);

設定ファイルに値を保存するにはSharedPreference.Editor、オブジェクトを使用する必要があります。クラスEditor内のネストされたインターフェースですSharedPreference

SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();

エディターは、ファイルから設定値を削除するためのremove()やなどのメソッドもサポートしています。clear()

アクティビティの設定:

共有設定は、他のアプリケーション コンポーネントで使用できます。ただし、設定を他のコンポーネントと共有する必要がなく、アクティビティをプライベート設定にしたい場合は、getPreferences()アクティビティのメソッドを使用してそれを行うことができます。このgetPreferenceメソッドはgetSharedPreferences()、設定ファイル名にアクティビティ クラスの名前を持つメソッドを使用します。

以下は設定を取得するためのコードです

SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);

値を保存するコードも共有設定の場合と同じです。

SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();

アクティビティ状態をデータベースに保存するなどの他の方法を使用することもできます。 Android には というパッケージも含まれていることに注意してくださいandroid.preference。 このパッケージは、アプリケーション設定 UI を実装するためのクラスを定義します。

さらに例を見るにはAndroidのデータストレージ開発者サイトに投稿します。

おすすめ記事