さまざまなアクティビティから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アクティビティから書き込んだ番号です。問題は、実際のPreferenceアクティビティに移動し、ListPreferenceで変更して同じアクティビティを起動すると、一致または更新されないことです([メインアクティビティ]ボタンから設定した値が引き続き読み取られます)。
ListPreferenceを読み取ろうとするアクティビティについて、次のようにコーディングします。
SharedPreferences settings = getSharedPreferences("PreferenceXML",
MODE_PRIVATE);
Toast.makeText(this, settings.getString("ListPreferenceInXML","1"), 1000).show();