2014-02-06 97 views
2

我正尝试在代码首选项类别中创建。 它工作正常。但是,如果我尝试添加首选项到我的类别,我会得到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解决它?

+2

尝试扭转最后两行的顺序: 'ps.addPreference(prefcat); prefcat.addPreference(p1);' – ozbek

+0

@shoerat,工作,谢谢!你应该把它写成答案,以便我可以放弃它! – Anonsage

+1

@Anonsage,9个月后它至少对两个人有用! :) – ozbek

回答

4

您正在尝试一个孩子(即p1)添加到父(即prefcat),它不存在于家庭存在(即Preference)层次呢。

首先,将prefcat添加到首选项屏幕,然后添加prefcat的孩子。也就是说,逆转最后两行的顺序:

ps.addPreference(prefcat); 
prefcat.addPreference(p1); 

很高兴帮助! :)

+0

完美!和明智的。 –