gpt4 book ai didi

android - 在 Android 3.0+ 上设置首选项的初始摘要

转载 作者:行者123 更新时间:2023-11-29 21:47:41 24 4
gpt4 key购买 nike

在接下来的代码中有两个 findpreference(key),第一个在 onCreate() 中,它返回 null,但第二个正确返回首选项。我需要第一个能够很好地初始化偏好摘要。我花了很多时间尝试不同的方法,阅读文档和谷歌搜索,但我还没有找到方法,请帮忙。

public class Settings30Activity extends PreferenceActivity implements OnSharedPreferenceChangeListener {

protected SettingsFragment settingsFragment;

@SuppressLint("NewApi")
@TargetApi(11)
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
settingsFragment = new SettingsFragment();

//findPreference 1 (returns null):
Preference stylePref=settingsFragment.findPreference("pref_style");
stylePref.setSummary(sharedPreferences.getString(key, ""));

}

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key.equals("pref_style")) {
//findPreference 2(returns the preference ok):
Preference stylePref=settingsFragment.findPreference("pref_style");
stylePref.setSummary(sharedPreferences.getString(key, ""));
}
}

调试时,我可以在变量中看到对象 settingsFragment/mPreferenceManager 在 Activity 生命周期中如何为空,直到 onSharedPreferenceChanged() 被调用,然后 settingsFragment/mPreferenceManager/mSharedPreferences 获得 sharedPrefereces 和findpreference() 运行良好。但我不知道该怎么做,因为它在 onSharedPreferenceChanged() 之外工作。

最佳答案

它返回 null,因为您的 key 在您的第一个 findPreference(key) 调用中是 null

在第二次调用中,key 作为参数传递给 onSharedPreferenceChanged(),这就是它在那里工作的原因。

当您寻找名为“pref_style”的键时,您可以为整个类定义该名称(例如 static final String PREF_STYLE_KEY = "pref_style"),然后调用 findPreference (PREF_STYLE_KEY) 在您的第一个调用中,key.equals(PREF_STYLE_KEY) 在您的 if() 语句中。

关于android - 在 Android 3.0+ 上设置首选项的初始摘要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15350791/

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