我正在尝试在代码首选项类别中创建。 它工作正常。但是如果我尝试将Preference添加到我的类别中,我会得到NullPointer异常。
Preference p1 = new Preference(getActivity());
p1.setTitle("Edit name");
PreferenceCategory prefcat = new PreferenceCategory(getActivity());
prefcat.setTitle("title");
prefcat.setSummary("summ");
prefcat.addPreference(p1); // HERE I GET NULL POINTER
ps.addPreference(prefcat);
ps - 它的首选屏幕对象。 为什么?我尝试调试它,Exception抛出PreferenceCategory的onPrepareAddPreference方法。 Hpw修复它?
答案 0 :(得分:3)
您正尝试将子项(即p1
)添加到父项(即prefcat
)中,该项尚未包含在族(即Preference
)层次结构中。
首先,将prefcat
添加到“首选项”屏幕,然后添加prefcat
个孩子。那就是,颠倒最后两行的顺序:
ps.addPreference(prefcat);
prefcat.addPreference(p1);
很高兴它有所帮助! :)