gpt4 book ai didi

java - 听取偏好变化

转载 作者:太空宇宙 更新时间:2023-11-04 13:12:16 24 4
gpt4 key购买 nike

在我的主要 Activity 中,我想听听首选项 Activity 中所做的更改。我用的是

    SharedPreferences prefs =
PreferenceManager.getDefaultSharedPreferences(getBaseContext());
SharedPreferences.OnSharedPreferenceChangeListener listener =
new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
//implement here -> but this peace of code is never called
}
};
prefs.registerOnSharedPreferenceChangeListener(listener);

但是监听器永远不会被调用。在我的 SettingsActivity 中,我使用 Android Studio 模板生成的代码。例如

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static class GeneralPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_general);
setHasOptionsMenu(true);
bindPreferenceSummaryToValue(findPreference("my_list"));
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
startActivity(new Intent(getActivity(), SettingsActivity.class));
return true;
}
return super.onOptionsItemSelected(item);
}
}

如何解决这个问题?

最佳答案

您需要在 SettingsActivity 中保留监听器的引用。 SharedPreferences 仅保留弱引用,这意味着您的监听器不会被调用。

关于java - 听取偏好变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33847727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com