this is my project's construct,as show below: this is my project's construct
Fragment1  hava an viewpager to nest two child Fragment:A and B, Fragment2,3,4 both like this. Then  Fragment A and B both hava  refreshData() method to refresh data.Now Fragment1 hava a button to select city.  I want to refresh Fragment A and B after change city. 
 But when I  switch from Fragment1 to Fragment4 ,then switch back to Fragment1 and click button to change city , when call refreshData() ,the getActivity() method returned null ,so will show NullPointerException error  .
that make me crazy.FragmentA and FragmentB both executed onCreateView, why getActivity() return null?
Fragment A code:
public class Fragment1 extends Fragment {
public Fragment1() {
    // Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_fragment1, container, false);
}
public void refreshData(String city){
    if ( null != getActivity()){
        //get data from webservice
    }
}
}
Fragment1.java :
    private List<Fragmnet> mFragmentList;
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    mFragmentList = new ArrayList<>();
    mFragmentList.add(new FragmentA());
    mFragmentList.add(new FragmentB());
    View v =inflater.inflate(R.layout.fragment_creadit, container, false);
    viewPager = (ViewPager) v.findViewById(R.id.pager);
    adapter = new ViewPagerAdapter(getResources(),  getChildFragmentManager(),titleList,mFragmentList);
    viewPager.setAdapter(adapter);
    return v;
}
update:I know why getActivity() return null . That's because Fragment1 will show old fragmentA and FragmentB even you reexecute Fragment1's onCreateView() to add new FragmentA\b and change fragmentAdapter's data.
so i change the Fragment1's onCreateView() to :
List<Fragmnet> mFragmentList ;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    if(  null ==  mFragmentList){
    mFragmentList  = new ArrayList<>();
    mFragmentList.add(new FragmentA());
    mFragmentList.add(new FragmentB());
    }
    View v =inflater.inflate(R.layout.fragment_creadit, container, false);
    viewPager = (ViewPager) v.findViewById(R.id.pager);
    adapter = new ViewPagerAdapter(getResources(),  getChildFragmentManager(),titleList,mFragmentList);
    viewPager.setAdapter(adapter);
    return v;
}
so when i call refreshData() ,this is old FragmentA's refreshData() ,not the new FragmentA's .
 
    