gpt4 book ai didi

android - 使用 fragment 动态更新摘要偏好?

转载 作者:行者123 更新时间:2023-11-30 02:29:09 25 4
gpt4 key购买 nike

我在更新 PreferncesFragment 的汇总值时遇到了问题。我已尝试遵循帖子的建议:Updating sharedPreferences Summary via listener 但它不起作用!摘要不更新...

我不明白哪里出了问题?感谢您的帮助!

我的首选项文件:

    <CheckBoxPreference 
android:key="is_title"
android:summary="@string/conf_istitle_sum"
android:title="@string/conf_istitle_title"
android:defaultValue="true"
/>
    <EditTextPreference
android:key="sms_title"
android:title="@string/conf_sms_title"
android:summary="@string/msgtitre"
android:dialogTitle="@string/conf_diagsms_title"
android:dialogMessage="@string/conf_diagsms_sum"
android:defaultValue="@string/msgtitre"
/>

我的偏好类:

public class SetPreferenceActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener { protected MyPreferenceFragment settingsFragment;

    @Override
protected void onCreate(final Bundle savedInstanceState)
{ settingsFragment = new MyPreferenceFragment();
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content,
settingsFragment).commit();
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
if (key.equals("sms_title")) {
String newValue = sharedPreferences.getString(key, "");
settingsFragment.findPreference(key).setSummary(newValue);
}
}
public static class MyPreferenceFragment extends PreferenceFragment
{
@Override
public void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);


}

}
}

有效的是已弃用的“旧”解决方案 OldPreferences

最佳答案

请检查 onSharedPreferenceChanged 是否被调用。您需要根据自己的喜好注册处理程序。第一的,在 onCreate 中获取对您的首选项的引用:

public class SettingsActivity 
extends AppCompatActivity
implements SharedPreferences.OnSharedPreferenceChangeListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
// ...
}

在 Activity 的生命周期中(注意我使用的是普通 AppCompatActivity 而不是 PreferenceActiviy)注册处理程序。

@Override
protected void onPause() {
super.onPause();
preferences.unregisterOnSharedPreferenceChangeListener(this);
}

@Override
protected void onResume() {
super.onResume();
preferences.registerOnSharedPreferenceChangeListener(this);
}

现在,应该调用处理程序:

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Log.d(DEBUG_TAG, key);
// fragment.findPreference(key) //... TBD
}

关于android - 使用 fragment 动态更新摘要偏好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27513539/

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