Android之子Fragment修改父Activity控件

Activity中嵌套几个Fragment是再正常不过的需求了,若要在子Fragment修改父Activity中的控件,则需要获得该控件的引用。

第一步,在Activity里动态加载Fragment:

BlankFragment blankFragment = new BlankFragment();         
FragmentManager fragmentManager = getSupportFragmentManager();         
FragmentTransaction beginTransaction = fragmentManager.beginTransaction();
beginTransaction.add(R.id.fragmentcontent, blankFragment);
beginTransaction.addToBackStack(null);
beginTransaction.commit(); 

第二步,在Fragment里的onAttach()方法中获得Activity的控件引用

@Override 
public void onAttach(Activity activity) {
    // TODO Auto-generated method stub 
    super.onAttach(activity); 
    if (activity instanceof MainActivity) {            
        MainActivity mainActivity = (MainActivity) activity;            
        textView = (TextView) mainActivity.findViewById(R.id.textView);        
    } 
} 

最后,可以在Fragment里修改父Activity中的TextView控件了。

注:以上的方法很简单,但是有时会导致控件空指针:

亲测:在平板开发,高频打开、关闭该Activity页面,导致控件空指针。

可以在使用该父类控件时,进行判断是否为空。

if (textView == null){                                 
    textView = getActivity().findViewById(R.id.textView);
}

 

你可能感兴趣的:(Android学习)