9

PreferenceActivity私のアプリでは、が開いていないときに一部の設定が変更される可能性があります。発生している問題は、addPreferencesFromResourceで呼び出されることですonCreate。たとえば、を開いてPreferenceActivity、そこから別の画面に移動し、何かを変更します。設定に戻り、戻るキーを押してに戻りPreferenceActivityます。レイアウトで特定の設定が変更されていません。

では、レイアウトを複製せずに、(または)が呼び出されるPreferencesたびにすべてを再ロードするにはどうすればよいでしょうか。onResumeonStart()

4

2 に答える 2

3

編集:このソリューションは、API11以降でのみ機能します。

私があなたの問題を完全に理解しているかどうかはわかりませんが、recreate()の呼び出しをアクティビティのonResumeに追加することができます。これは、私の理解から、アクティビティがライフサイクル全体を再び通過するようにします。

実際にダーティデータがある場合にのみこれを実行するようにするために、SharedPreferencesにフラグを設定して、onResume()でアクティビティに再作成が必要であることを通知します。

    public void onResume(){
            super.onResume();
            SharedPreferences pref = getApplicationContext().getSharedPreferences(Constants.PREFS_NAME, Context.MODE_PRIVATE);
            if(pref.getBoolean("isDirtyPrefs", true))
                recreate();
        }
于 2011-09-19T04:10:13.850 に答える
1

私も同様の問題を抱えていました。PreferenceActivityを自動的に更新する簡単な方法が見つからなかったため、私の解決策はこれをPreferenceActivityに追加することでした。

/**
 * Called when activity leaves the foreground
 */
protected void onStop() {
    super.onStop();
    finish();
}

これにより、次に起動したときにPrefs画面がSharedPreferencesからリロードされます。言うまでもなく、戻るボタンを使用して設定画面に戻ることができるようにする場合、このアプローチは機能しません。

于 2011-10-05T11:31:05.017 に答える