我正在测试一些想法,可能需要一些帮助。情况是:我有一个带偏好片段的活动。单击其中一个选项时,我希望我的活动显示或隐藏首选项下面的另一个片段。我得到的只是NullPointerException,我想我无法从GroupSettingFragment获取对MainActivity的引用。以下是代码:
public class GroupsSettingFragment extends PreferenceFragment{
MainActivity activity = (MainActivity)getActivity();
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.groups_settings);
Preference pref = findPreference("pref3");
pref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
activity.performChange();
return false;
}
});
}
}
在MainActivity中
public void showContacts(){
fr = new ContactsListFragment();
FragmentTransaction tr = getFragmentManager().beginTransaction();
tr.add(R.id.contact_list, fr);
tr.commit();
}
public void hideContacts(){
FragmentTransaction tr = getFragmentManager().beginTransaction();
tr.remove(fr);
tr.commit();
}
public void performChange(){
if(isShown){
//hideContacts();
isShown = false;
}else{
//showContacts();
isShown = true;
}
}
我将不胜感激任何帮助。 此致
答案 0 :(得分:1)
创建活动时,片段不会自动分配给活动,这就是getActivity();
全局返回null
的原因。如果要访问活动,则应使用方法onAttach(Activity activity)
。