9

私の Android アプリケーションには 2 種類の設定があります。

1) res/xml/preferences.xml でユーザー設定を定義して、ユーザーが PreferenceActivity で自分の設定を管理できるようにします。

2) アプリのグローバル構成設定用に別のファイルを定義したいと思います。

アプリの構成設定を管理する最良の方法は何ですか? 構成値を含む別の XML ファイルを作成する必要がありますか、それとも、strings.xml でそれらの構成値を指定する必要がありますか? 構成設定を管理するためのベスト プラクティスは何ですか?

4

3 に答える 3

6

設定ファイルはプロジェクトに保存されません/res/xml/defaults.xml

それらは、デバイスのアプリケーションフォルダに次のように保存されます。

/data/data/com.your.pkg/default.prefs

このOPがこの質問で持っていたように、設定ファイルでいくつかの問題が発生するため、ファイル名を指定しないでください:Androidで設定を機能させるにはどうすればよいですか?

SharedPreferences preferences = PreferenceManager
                    .getDefaultSharedPreferences(context);

次に、おそらくクエリする必要があります

preferences.getString('weightPref', null);

多くのアプリケーションは、特定のアプリケーションまたはアクティビティの設定に関するユーザー設定をキャプチャする方法を提供する場合があります。これをサポートするために、AndroidはAPIのシンプルなセットを提供します。

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

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

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

共有設定:

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

(1)ファイル名を指定した場合のインスタンスの取得方法は次のとおりです。

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

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

(2)推奨される方法は、ファイル名を指定せずにデフォルトモードで使用することです。

SharedPreferences preferences = PreferencesManager.getDefaultSharedPreferences(context);

最後に、プリファレンスインスタンスを取得したら、プリファレンスから保存された値を取得する方法を次に示します。

 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のデータストレージの投稿を確認してください。

于 2010-06-23T11:11:11.900 に答える
1

xml が次のようになっているとします。

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
   <CheckBoxPreference android:key="gpsOn" 
                    android:summaryOff="GPS is Off"
                    android:summaryOn="GPS is On" 
                    android:title="GPS State"></CheckBoxPreference>

PreferenceActivitya を使用して xml から設定を読み込むと仮定します。だからあなたの活動ではaddPreferencesFromResource(R.xml.application_pref);

これを行うと、デフォルトで、すべての値がアプリケーションのデフォルトの SharedPreference に保存されます。これらの設定は、どこからでもアクセスできます。したがって、他のアクティビティ/サービスから次のようにします。

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
boolean value = prefs.getBoolean("gpsOn", false);

そして、そのように、ユーザーの好みを取得する必要がありますvalue

于 2010-07-10T02:17:06.700 に答える
0

おそらく、アプリのグローバル構成設定を設定する最良の方法は、Androidマニフェストでメタデータ要素を定義することです。

于 2010-09-09T11:12:29.260 に答える