1

ユーザーが特定のオプションをオンまたはオフにするためにpreferenceScreen(チェックボックス)を使用するアプリがあります。xml ファイルを拡張する設定フラグメントは次のようになります。

public class BrandsFragment : PreferenceFragment 
    {

        public override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            AddPreferencesFromResource (Resource.Menu.brandPrefs);

            var prefs = PreferenceManager.GetDefaultSharedPreferences(this.Activity);

        }

}

これは正常に機能し、設定を正常に変更できます。

ただし、メイン アクティビティ (フラグメントではない) の OnCreate メソッドから設定を取得する必要があります。

これは私が試したことです:

protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            var prefs = PreferenceManager.GetDefaultSharedPreferences(this);
            wantGeneral = prefs.GetBoolean ("checkbox_preference_general", true);
            Console.WriteLine ("Pref is " + wantGeneral);

            SetContentView(Resource.Layout.NavigationDrawer);

             .......
}

ただし、「wantGeneral」設定は、チェックボックスがオンになっているかどうかに関係なく、常に true に戻ります。私のアクティビティから、設定をうまく取得していないことは明らかです。

アクティビティから設定を取得するにはどうすればよいですか?

4

1 に答える 1

2

よく考えていなかったのは私だったようです。コードを OnResume() に移動するか、設定ページで設定を変更した後に呼び出される別の場所に移動する必要がありました。そうすれば、最新の設定が取り込まれます。

于 2015-02-02T15:23:42.320 に答える