1

ゲームを作ろうとしています。今、私が保持する必要があるいくつかのデータ(音楽、エフェクト、バックグラウンドのオン/オフ)について、使用したいと思いますpreferences

という名前の新しいxmlファイルを作成しますpreferences.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
    <EditTextPreference android:key="music" android:title="Some title" android:defaultValue="true"/>


</PreferenceScreen>

次に、(ルート権限で)その場所に移動すると、libフォルダーしかありません data/data/my.app.folder/shared_prefsフォルダがありません。

設定にアクセスしようとすると、null になります。getSharedPreferences()と で試してみましたPreferenceManager.getDefaultSharedPreferences()。その理由は何ですか?また、 のアクティビティがありませんpreferences。手動で管理したいです。

どうすればこの問題を乗り越えることができますか?

4

2 に答える 2

1

共有設定を使用するには、最初に作成する必要があります。このような:

SharedPreferences prefs = getApplicationContext().getSharedPreferences(
      "music", Context.MODE_PRIVATE);

初めてプリファレンスを作成するには:

    final String BACKGROUND_DEFAULT_VALUE = "on";
    final String DEFAULT_TITILE = "";
    final String TITILE_KEY = "title";
    final String BACKGROUND_KEY = "background_key";
    Editor editor= prefs.edit();
    editor.putString(TITILE_KEY, DEFAULT_TITILE);
    editor.putString(BACKGROUND_KEY, BACKGROUND_DEFAULT_VALUE);
    editor.commit();

設定を編集/保存するよりも:

    Editor editor= prefs.edit();
    editor.putString(TITILE_KEY, "new title");
    editor.putString(BACKGROUND_KEY, "new background value i.e on/off");
    editor.commit();

設定を読むよりも:

String background_value = prefs.getString(BACKGROUND_KEY); 
String title_value = prefs.getString(TITILE_KEY ); 

共有設定ファイルは、作成後に存在する場所で確認できます。

/data/data/<packagename>/shared_prefs/music.xml

詳細とヘルプについては、android SDK のサンプル ディレクトリに、共有設定の取得とストローの例が含まれています。次の場所にあります。

<android-sdk-home>/samples/android-<platformversion>/ApiDemos directory

それが役に立てば幸い。

于 2013-03-03T04:38:13.880 に答える
0

プリファレンスに関連する xml ファイルには、2 つの異なるタイプがあります。表示しているのは、設定階層 (画面表現) を表す xml リソース ファイルです。2 つ目は、実際のキーと値のペアを含むファイルです。最初のものを作成しても、2 番目のものは作成されません。実際には、PreferenceActivity (または Fragment に相当するもの、または私が理解しているように、実行しようとしている独自の表示方法) を使用してファイルを表示する必要があります。または、コードで設定を作成する必要があります。

于 2013-03-03T02:45:12.853 に答える