Android从片段调用活动方法

时间:2013-05-24 07:45:12

标签: android android-activity fragment

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

我将不胜感激任何帮助。 此致

1 个答案:

答案 0 :(得分:1)

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