web-dev-qa-db-ja.com

Android-コードで設定を行う方法

AndroidアプリケーションでXMLファイルに設定があり、正常に動作します。設定画面全体を表示するのではなく、コードを使用して設定の1つを設定したいと思います。私はこれをやってみますか?

41
stonedonkey

設定では、Android電話の設定ではなく、アプリケーションの設定を参照していると仮定します。

アプリケーションの実行間の設定を保存するには、次のことを行う必要があります

  1. SharedPreferencesオブジェクトを作成します

    SharedPreferences settings = getSharedPreferences(String n, MODE_PRIVATE);
    

    文字列nは設定を識別し、2番目の引数はアクセスされるモードです

  2. Editorオブジェクトをインスタンス化します

    SharedPreferences.Editor editor = settings.edit();
    

    注:settings.editor.edit()を試さないでください、これは永続オブジェクトを作成せず、以下のコードは機能しません

  3. 設定をバッファに書き込みます

    editor.put...(String, value)
    

    多数のput関数、putString、putBooleanなどがあります。文字列はキー(「バージョン」、「グッドラン」)であり、値は値(「1.5.2」、true)です。 )

  4. バッファーをフラッシュする

    editor.commit();
    

    これは、実際にあなたがプリファレンスに書き込みます。この行の前にアプリがクラッシュした場合、設定は書き込まれません。文書化されたバグもあります。commit()は、成功または失敗を示すブール値を返すことになっています。最後にチェックすると、常にfalseが返されました。

これらの設定は電話に保存され、アプリケーションからのみアクセス可能になります。

その他のドキュメントは here です

120
Will

私はこれを試しましたが、うまくいきませんでした:

SharedPreferences settings = getSharedPreferences(String n, MODE_PRIVATE);

代わりにこれを試してください:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
8
Adan

以下のコードを使用して、sharedpreferencesに何かを保存できます。

public static void save(String valueKey, String value) {
    SharedPreferences prefs = PreferenceManager
            .getDefaultSharedPreferences(context);
    SharedPreferences.Editor edit = prefs.edit();
    edit.putString(valueKey, value);
    edit.commit();
    }

設定を読むには:

public static String read(String valueKey, String valueDefault) {
    SharedPreferences prefs = PreferenceManager
            .getDefaultSharedPreferences(context);
   return prefs.getString(valueKey, valueDefault);
}
2
AndroidSter