私は1つを持っているアプリを開発しています Activity
2つ Fragments
二番目 Fragments
最初の子です。 2つ目に入ると Fragments
システムがスローする言語をフランス語から英語に変更します IllegalStateException
アプリに戻ると、 Fragments
すでに存在しています。
Caused by: java.lang.IllegalStateException: Fragment already added
SettingsFragment{d25576a #3 id=0x1020011}
android.support.v4.app.FragmentManagerImpl.addFragment
FragmentManager.java, line 1679
android.support.v4.app.BackStackRecord.executePopOps
BackStackRecord.java, line 781
android.support.v4.app.FragmentManagerImpl.executeOps
FragmentManager.java, line 2360
android.support.v4.app.FragmentManagerImpl.executeOpsTogether
FragmentManager.java, line 2149
android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps
FragmentManager.java, line 2103
android.support.v4.app.FragmentManagerImpl.execPendingActions
FragmentManager.java, line 2013
android.support.v4.app.FragmentController.execPendingActions
FragmentController.java, line 388
android.support.v4.app.FragmentActivity.onStart
FragmentActivity.java, line 607
android.support.v7.app.AppCompatActivity.onStart
AppCompatActivity.java, line 178
android.app.Instrumentation.callActivityOnStart
Instrumentation.java, line 1256
android.app.Activity.performStart
Activity.java, line 6972
android.app.ActivityThread.performLaunchActivity
回答:
回答№1は0スタックトレースの最初の行を読む必要があります。
IllegalStateException:フラグメントはすでに追加されています
フラグメントを2回追加する場合は、コードを確認してください。
回答№2の場合は0
チェックしてみてください if (savedInstanceState == null)
フラグメントを追加するとき onCreate()
あなたの活動の
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager()
.beginTransaction()
.add(R.id.main_frame_layout, new SettingsFragment())
.commit();
}
}
回答№3の場合は0
フラグメントを追加する前に、このフラグメントがまだ追加されていないことを確認する必要があります
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.container);
if (fragment == null) {
MyFragment myFragment = new MyFragment();
getSupportFragmentManager().beginTransaction().add(R.id.container, myFragment).commit();
}