我想在运行时添加Preference
。问题是,它们看起来与静态定义的Preference
不同。我想我可能需要将AttributeSet
传递给构造函数,但我不知道如何获取系统的默认AttributeSet。
如何使动态添加的Preference
看起来像静态的?
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceCategory;
import android.support.v7.preference.PreferenceFragmentCompat;
import android.support.v7.preference.PreferenceManager;
public static class MyPref extends PreferenceFragmentCompat
{
@Override
public void onCreatePreferences(Bundle bundle, String s)
{
addPreferencesFromResource(R.xml.my_preferences);
final PreferenceCategory category1 = (PreferenceCategory) findPreference("category1");
Preference p = new Preference(this.getContext());
p.setTitle("Santos L. Helper");
p.setSummary("Dynamically added");
category1.addPreference(p);
答案 0 :(得分:0)
更改
Preference p = new Preference(this.getContext());
到
Preference p = new Preference(category1.getContext());
解决了这个问题。我想这里的教训是始终使用最近祖先的上下文。