Mögliche Duplikate mit RuntimeException: java.lang.IllegalArgumentException mit MainActivity.onStart
java.lang.IllegalArgumentException when switching fragmentsAber das Szenario des Problems ist dieser Link anders.
Hier ist mein Code
public class MainActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
bindWidgetsWithAnEvent();
}
private void bindWidgetsWithAnEvent() {
tabsLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(final TabLayout.Tab tab) {
setCurrentTabFragment(tab.getPosition());
Log.d(TAG, "Position " + tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
Log.d(TAG, String.valueOf(tab.getPosition()));
}
});
}
public void setCurrentTabFragment(int tabPosition) {
switch (tabPosition) {
case 0:
replaceFragment(fragmentName);
break;
case 1:
replaceFragment(fragmentName);
break;
default:
break;
}
}
public void replaceFragment(Fragment fragment) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.flContent, fragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
}
@Override
protected void onStart() {
super.onStart();
}
}
Die unter der Stacktrace von Google Konsole gefangen ist, und immer noch nicht die Lösung erhalten nach der Suche. Bitte lassen Sie mich wissen, wenn jemand eine bessere Lösung hat oder das gleiche Problem hat.
java.lang.IllegalStateException:
at android.support.v4.app.FragmentManagerImpl.checkStateLoss (FragmentManager.java:1842)
at android.support.v4.app.FragmentManagerImpl.enqueueAction (FragmentManager.java:1860)
at android.support.v4.app.BackStackRecord.commitInternal (BackStackRecord.java:650)
at android.support.v4.app.BackStackRecord.commit (BackStackRecord.java:609)
at com.safarifone.waafi.ui.activities.MainActivity.replaceFragment (MainActivity.java:354)
at com.safarifone.waafi.ui.activities.MainActivity.setCurrentTabFragment (MainActivity.java:336)
at com.safarifone.waafi.ui.activities.MainActivity$3.onTabSelected (MainActivity.java:303)
at android.support.design.widget.TabLayout.dispatchTabSelected (TabLayout.java:1164)
at android.support.design.widget.TabLayout.selectTab (TabLayout.java:1157)
at android.support.design.widget.TabLayout.selectTab (TabLayout.java:1127)
at android.support.design.widget.TabLayout$Tab.select (TabLayout.java:1426)
at android.support.design.widget.TabLayout$TabView.performClick (TabLayout.java:1536)
at android.view.View$PerformClick.run (View.java:20300)
at android.os.Handler.handleCallback (Handler.java:815)
at android.os.Handler.dispatchMessage (Handler.java:104)
at android.os.Looper.loop (Looper.java:210)
at android.app.ActivityThread.main (ActivityThread.java:5833)
at java.lang.reflect.Method.invoke (Native Method)
at java.lang.reflect.Method.invoke (Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1113)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:879)
Hilfe wird
versuchen Sie es mit ft.commitAllowingStateLoss(); anstelle von ft.commit(); https://stackoverflow.com/a/18345684/5069323 –
versuchen, ft.replace (R.id.flContent, Fragment) zu ersetzen; mit ft.replace (R.id.flContent, fragment, fragment.getClass(). getName()); –
@PratikTank und SagarVasoya Ich werde mit diesen Optionen überprüfen, aber Sie sind sicher, dass dies das Problem lösen wird. Weil ich das Problem nicht selbst reproduzieren kann. Dies wird von der Google Play-Konsole erfasst. –