setSummary()不会立即刷新

时间:2014-06-23 19:17:57

标签: java android refresh preferences preferenceactivity

我遇到的问题是PreferenceScreen的摘要不会立即刷新。

我在另一个CheckBoxPreference中有一个PreferenceScreen。我正在跟踪CheckBoxonSharedPreferenceChanged()值的更改,并使用setSummary()更改屏幕摘要。但是当我回到主PreferenceScreen时,不显示更改的摘要,只显示旧的摘要 我必须再向下滚动直到它显示出来。因此,一旦它退出视野并重新焕然一新。

如何立即刷新?


我的PreferenceActivity的一部分:

public class AppPreferencesActivity extends android.preference.PreferenceActivity {

  @Override
  public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    if (key.equals("pref1")) {
      this.findPreference("screen2").setSummary("mySummary");
    }
  }

我的偏好文件的一部分:

<?xml version="1.0" encoding="utf-8"?>

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">    
    <PreferenceCategory android:title="Category Title">
        <PreferenceScreen android:key="screen2"
                          android:title="Screen Title">

            <CheckBoxPreference android:key="pref1"
                                android:title="Pref Title"                                
                                android:defaultValue="true" />
  </PreferenceCategory>
</PreferenceScreen>

2 个答案:

答案 0 :(得分:0)

onSharedPreferenceChanged替换为onPreferenceChange

public class AppPreferencesActivity extends PreferenceActivity implements OnPreferenceChangeListener {

    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        //Set summary here
    }
}

答案 1 :(得分:0)

这对我有用:

BaseAdapter baseAdapter = (BaseAdapter) getPreferenceScreen().getRootAdapter();
baseAdapter.notifyDataSetChanged();