3

さまざまなアクティビティからlistPreference値を取得して設定しようとしていますが、機能していません。

メインのアクティビティから読み書きするときは、書いたものだけが保持されるので、アクティビティの外では、設定アクティビティ内で問題なく機能しているため、listPreferenceを正しくターゲットにしていないと想定しています。

開発者のWebサイトでgetValueとgetEntryValuesを使用したCharSequenceへの参照をいくつか見ましたが、それらを正しく機能させることができませんでした。

ボタンをクリックしてlistpreference値を設定すると、アクティビティを切り替えるインテントが起動するコードを次に示します。

メインアクティビティ、listpreferenceの値を最初のインデックス値に設定しようとしています。

        SharedPreferences settings = getSharedPreferences("PreferenceXML", 
                MODE_PRIVATE);
            SharedPreferences.Editor editor = settings.edit();

            editor.putString("ListPreferenceInXML", "1");
            editor.commit();

            String levelCheck = settings.getString("ListPreferenceInXML","1");

次のアクティビティでは、起動時に値を読み取り、どのlistPreferenceがアクティブであるかを確認します。これは、常に上記のmainsアクティビティから書き込んだ番号です。問題は、実際のP​​referenceアクティビティに移動し、ListPreferenceで変更して同じアクティビティを起動すると、一致または更新されないことです([メインアクティビティ]ボタンから設定した値が引き続き読み取られます)。

ListPreferenceを読み取ろうとするアクティビティについて、次のようにコーディングします。

    SharedPreferences settings = getSharedPreferences("PreferenceXML", 
                MODE_PRIVATE);

    Toast.makeText(this, settings.getString("ListPreferenceInXML","1"), 1000).show();
4

1 に答える 1

4

それで私はついにそれを理解しました、問題は私が好みを呼ぶ方法にありました。どちらの場合も、このように設定を呼び出す代わりに、

   SharedPreferences settings = getSharedPreferences("PreferenceXML", 
            MODE_PRIVATE);

このようにそれらを呼び出します:

   SharedPreferences settings = 
        PreferenceManager.getDefaultSharedPreferences(getBaseContext());

プリファレンスを呼び出す最初の方法に欠けているステップがあるかどうかはわかりませんが、この2番目の方法はチャンピオンのように機能しました。

于 2011-05-28T10:37:47.523 に答える