在android中,Fragment上的onstart()被调用了两次

在android中,Fragment上的onstart()被调用了两次,android,android-fragments,Android,Android Fragments,我有一个活动,我有一个片段。在片段的onStart()中,我有所有的网络调用。当应用程序来自后台时,onStart()会被调用两次,所有网络都会被调用两次,我还观察到onCreate()只被调用一次。有人遇到过这样的问题。请帮我解决。 我的片段事务代码如下 MainFragment myFragment = new MainFragment (); FragmentManager fragmentManager = getSupportFragmentManag

我有一个活动,我有一个片段。在片段的onStart()中,我有所有的网络调用。当应用程序来自后台时,onStart()会被调用两次,所有网络都会被调用两次,我还观察到onCreate()只被调用一次。有人遇到过这样的问题。请帮我解决。 我的片段事务代码如下

 MainFragment myFragment = new MainFragment ();
                FragmentManager fragmentManager = getSupportFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.content_frame, myFragment, "MyFragment");
                fragmentTransaction.commitAllowingStateLoss();

提前感谢

尝试在替换之前检查片段是否已添加

final FragmentManager fragmentManager = getSupportFragmentManager();
final Fragment content = fragmentManager.findFragmentById(R.id.content_frame);
if (content == null || !(content instanceof MainFragment)) {
    final FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    final MainFragment myFragment = new MainFragment();
    fragmentTransaction.replace(R.id.content_frame, myFragment, "MyFragment");
    fragmentTransaction.commitAllowingStateLoss();
}

commit
committeallowingstateloss
是一个异步执行,因此
fragmentManager.findframentbyid(R.id.content\u frame)
将在第一次
提交
完成之前执行
null
,这将导致调用两次
替换
。 您可以调试
onStart
函数,并查看当前
Fragment
对象的hashCode

我将
commit
替换为
commitNow

FragmentManager FragmentManager=activity.getFragmentManager();
Fragment lifeFragment=fragmentManager.findFragmentByTag(TAG_Fragment);
if(lifeFragment==null | |!(lifeFragment的lifeFragment实例)){
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.N){
fragmentManager.beginTransaction()
.add(新的生命片段(),标记_片段)
.commitNowAllowingStateLoss();
}否则{
fragmentManager.beginTransaction()
.add(新的生命片段(),标记_片段)
.commitAllowingStateLoss();
}
}

仍然没有运气same@ARPаR.id.content_框架的所有片段都是MainFragment的实例,它将失败。是这样吗?请发布您的onCreate方法。我怀疑onStart()的一个调用来自片段的另一个实例。