У меня есть кодовая база из нескольких фрагментов, помещенных в действие, и включает в себя множество транзакций, таких как замена и удаление. Я не совсем уверен, из-за какого фрагмента происходит сбой этой общей ошибки. Было бы замечательно, если есть какое-либо решение этой проблемы?
ОШИБКА:
java.lang.IllegalArgumentException:
at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1413)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManager.java:1740)
at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1809)
at android.support.v4.app.FragmentManagerImpl.dispatchStateChange (FragmentManager.java:3217)
at android.support.v4.app.FragmentManagerImpl.dispatchReallyStop (FragmentManager.java:3198)
at android.support.v4.app.FragmentController.dispatchReallyStop (FragmentController.java:240)
at android.support.v4.app.FragmentActivity.onReallyStop (FragmentActivity.java:677)
at android.support.v4.app.FragmentActivity.doReallyStop (FragmentActivity.java:656)
at android.support.v4.app.FragmentActivity$1.handleMessage (FragmentActivity.java:87)
at android.os.Handler.dispatchMessage (Handler.java:108)
at android.os.Looper.loop (Looper.java:206)
at android.app.ActivityThread.main (ActivityThread.java:6784)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:240)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:852)
Невозможно что-либо проверить или попробовать, так как не может воспроизвести.
MainActivity extends BaseActivity {
@Override
public void pushFragment(BaseFragment fragment) {
if (isFinishing() || fragment == null) {
return;
}
try {
super.pushFragment(fragment);
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
if (fragment instanceof FragmentTestOne) {
findViewById(R.id.content_test_one).setVisibility(View.VISIBLE);
transaction.replace(R.id.content_channel_epg, fragment);
} else if (fragment instanceof FragmentTestTwo) {
findViewById(R.id.content_test_two).setVisibility(View.VISIBLE);
transaction.replace(R.id.content_test_two, fragment);
} else {
transaction.add(R.id.content_test_three, fragment);
}
transaction.addToBackStack(null);
transaction.commitAllowingStateLoss();
} catch (Throwable e) {
e.printStackTrace();
}
}
}
BaseActivity extends AppCompatActivity{
pushFragment(BaseFragment fragment){
}
}
public FragmentTestOne extends BaseFragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_test_one, container, false);
readBundleValues(getArguments());
return rootView;
}
// Other part of implementation goes here...
}
public FragmentTestTwo extends BaseFragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_test_two, container, false);
readBundleValues(getArguments());
return rootView;
}
// Other part of implementation goes here...
}
public BaseFragment extends Fragment{
}
Ожидается разрешение, которое обеспечит по крайней мере воспроизводимый сценарий из моего кода. Или исправить будет наиболее ценно.
Заранее спасибо за помощь.