Android ViewPager嵌套片段生命周期

Android ViewPager嵌套片段生命周期,android,android-viewpager,android-nested-fragment,Android,Android Viewpager,Android Nested Fragment,我将嵌套片段和viewPager一起使用。以下是我的HomeFragment代码,它是viewPager中的片段之一HomeFragment保存另一个名为FeedFragment的片段,它只是一个RecyclerView。在FeedFragment内部,我正在使用一个回调接口,通知HomeFragment已成功创建FeedFragment。我遇到的问题是,第一次创建HomeFragment时,mListener值被设置为HomeFragment内部onCreateView的实例,并且所有内容都被

我将嵌套片段和viewPager一起使用。以下是我的
HomeFragment
代码,它是viewPager中的片段之一
HomeFragment
保存另一个名为
FeedFragment
的片段,它只是一个
RecyclerView
。在
FeedFragment
内部,我正在使用一个回调接口,通知
HomeFragment
已成功创建
FeedFragment
。我遇到的问题是,第一次创建
HomeFragment
时,
mListener
值被设置为
HomeFragment
内部
onCreateView
的实例,并且所有内容都被正确加载。当我移动到viewPager中的另一个片段并返回到
HomeFragment
时,
HomeFragment
onCreateView
方法被调用,
mListener
再次被设置为
HomeFragment
的一个实例,然后从
FeedFragment
调用
onCreateView
方法,但
mListener
这次是
null

以下是FeedFragment的代码:

public class FeedFragment extends Fragment {

    RecyclerView feedRecyclerView;
    FeedRecyclerViewAdapter feedRecyclerViewAdapter;
    private OnCompleteListener mListener;

    public FeedFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_feed, container, false);

        feedRecyclerView = (RecyclerView) view.findViewById(R.id.postFeedItemContainer);
        feedRecyclerViewAdapter = new FeedRecyclerViewAdapter(getActivity());
        feedRecyclerView.setAdapter(feedRecyclerViewAdapter);
        feedRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

        mListener.onComplete(feedRecyclerViewAdapter, this);

        return view;
    }

    public interface OnCompleteListener {
        void onComplete(
                FeedRecyclerViewAdapter feedRecyclerViewAdapter, FeedFragment feedFragment);
    }

    public void setmListener(OnCompleteListener mListener) {
        this.mListener = mListener;
    }
}
以下是HomeFragment的代码:

public class HomeFragment extends Fragment implements FeedFragment.OnCompleteListener {

    // presenter instance
    private HomeFragmentPresenter homeFragmentPresenter = HomeFragmentPresenter.getInstance();

    public HomeFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction();
        FeedFragment feedFragment = new FeedFragment();
        feedFragment.setmListener(this);
        fragmentTransaction.add(R.id.fragmentHomeFeedContainer, feedFragment);
        fragmentTransaction.commit();

        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_home, container, false);
    }

    @Override
    public void onComplete(FeedRecyclerViewAdapter feedRecyclerViewAdapter, FeedFragment feedFragment) {
        homeFragmentPresenter.fetchDataForAdapter(feedRecyclerViewAdapter, feedFragment);
    }
}