0

我正在测试一些想法,可能需要一点帮助。情况是:我有一个带有偏好片段的活动。单击其中一个选项时,我希望我的活动显示或隐藏首选项下方的另一个片段。我得到的只是 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;
        }
    }

我将不胜感激任何帮助。问候

4

1 回答 1

1

片段在创建时不会自动分配给活动,这就是全局getActivity();返回的原因。如果您想访问活动,null您应该使用该方法。onAttach(Activity activity)

于 2013-05-24T07:53:46.553 回答