Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在片段内多次调用OnResume_Android_Android Fragments_Android Viewpager_Onresume_Fragmentmanager - Fatal编程技术网

Android 在片段内多次调用OnResume

Android 在片段内多次调用OnResume,android,android-fragments,android-viewpager,onresume,fragmentmanager,Android,Android Fragments,Android Viewpager,Onresume,Fragmentmanager,我有InnerFragment包含回收视图,InnerFragment添加到ViewPager。 当在轻扫恢复时创建MainFragment时,将调用多次 第一次:OnResume在MainFragment中调用一次,在InnerFragment中调用一次 2n时间:OnResume在MainFragment中调用一次,在InnerFragment中调用两次 第三次:OnResume在MainFragment中调用一次,在InnerFragment中调用三次 在ViewPager中添加Mai

我有InnerFragment包含回收视图,InnerFragment添加到ViewPager。 当在轻扫恢复时创建MainFragment时,将调用多次

  • 第一次:OnResume在MainFragment中调用一次,在InnerFragment中调用一次
  • 2n时间:OnResume在MainFragment中调用一次,在InnerFragment中调用两次
  • 第三次:OnResume在MainFragment中调用一次,在InnerFragment中调用三次
在ViewPager中添加MainFragment

//Assigning Adapter in ViewPager
mViewPager.setAdapter(new MyAdapter(getFragmentManager()));
//getItem inside MyAdaper
public Fragment getItem(int position){
    return MainFragment.newInstance(position);
}
getChildFragmentManager().beginTransaction().replace(R.id.framelayoutID, InnerFragment.newInstance()).commit();
在MainFragment中添加InnerFragment

getChildFragmentManager().beginTransaction().add(R.id.framelayoutID, InnerFragment.newInstance()).commit();

添加片段时,请使用replace()而不是add()

之前

getChildFragmentManager().beginTransaction().add(R.id.framelayoutID, InnerFragment.newInstance()).commit();
之后

//Assigning Adapter in ViewPager
mViewPager.setAdapter(new MyAdapter(getFragmentManager()));
//getItem inside MyAdaper
public Fragment getItem(int position){
    return MainFragment.newInstance(position);
}
getChildFragmentManager().beginTransaction().replace(R.id.framelayoutID, InnerFragment.newInstance()).commit();

接受我自己的答案,因为它对我有用,也可能对其他人有帮助。