Java lang illegalstateexception commit already called

java.lang.IllegalStateException: commit already called in view pager with Tablayout

I am using View pager with Tablayout in my project. I am continuously getting crash report on crashlytics. Below is the stack trace.

java.lang.IllegalStateException: commit already called at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:624) at android.support.v4.app.BackStackRecord.commitAllowingStateLoss(BackStackRecord.java:620) at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:161) at android.support.v4.view.ViewPager.d(ViewPager.java:1105) at android.support.v4.view.ViewPager.d(ViewPager.java:951) at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1473) at android.view.View.measure(View.java:15635) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919) at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at android.view.View.measure(View.java:15635) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1411) at android.widget.LinearLayout.measureVertical(LinearLayout.java:698) at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) at android.view.View.measure(View.java:15635) at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:681) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461) at android.view.View.measure(View.java:15635) at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:868) at android.view.View.measure(View.java:15635) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919) at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at android.support.v7.internal.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:124) at android.view.View.measure(View.java:15635) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1411) at android.widget.LinearLayout.measureVertical(LinearLayout.java:698) at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) at android.view.View.measure(View.java:15635) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919) at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at android.view.View.measure(View.java:15635) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1411) at android.widget.LinearLayout.measureVertical(LinearLayout.java:698) at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) at android.view.View.measure(View.java:15635) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919) at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2200) at android.view.View.measure(View.java:15635) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2165) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1249) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1443) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1139) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4872) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:776) at android.view.Choreographer.doCallbacks(Choreographer.java:579) at android.view.Choreographer.doFrame(Choreographer.java:548) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:762) at android.os.Handler.handleCallback(Handler.java:800) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5371) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) at dalvik.system.NativeStart.main(NativeStart.java) 
public class TabsPagerAdapter extends FragmentStatePagerAdapter < Context context; ViewPager pager; int count; public TabsPagerAdapter(FragmentManager fm, Context context, ViewPager pager ) < super(fm); this.context = context; this.pager = pager; >@Override public CharSequence getPageTitle(int position) < return ActivityMain.setdynamicTabsNames.get(position); >@Override public Fragment getItem(int index) < if (ActivityMain.setdynamicTabs.get(index).equalsIgnoreCase("HOME")) < return new FragmentIndex(); else < return new FragmentDynamicTab(index); >> @Override public int getCount() < return ActivityMain.setdynamicTabs.size(); >@Override public void destroyItem(ViewGroup container, int position, Object object) < // supertabLayout.destroyItemsetupWithViewPager(container, position, objectviewPager); >public void setCount(int count) < this.count = count; >> 

I am setting tablayout like this in java code

Читайте также:  Bin str to int python

I have gone through all possible solutions available for this error..But none of them is working. I am unable to trace what is causing this exception.Any help will be appreciated.

Harry Sharma Avatar

asked Aug 10 ’15 12:08

Harry Sharma

1 Answers

Apparently commit() or commitAllowingStateLoss() happens twice inside FragmentStatePagerAdapter . Here what I found out from android sources:

The only place from where the transaction of this adapter is commited is FragmentStatePagerAdapter.finishUpdate() and it’s commitAllowingStateLoss() version of commit() . Hence, finishUpdate() is called twice. This method is called from 3 places:

Now, finishUpdate() is protected by if (mCurTransaction != null) check and inside this check mCurTransaction is nulled. Hence we cannot really commit the same transaction twice. Unless we have multiple threads working on it. mCurTransaction field is not volatile, which leads me to idea that you’re probably calling (directly or indirectly) one of the methods listed above from the worker thread and sometimes it leads to a race condition around mCurTransaction field, which leads to a second commitAllowingStateLoss() call.

Make sure you’re referencing your adapter and related objects only from main (UI) thread.

Источник

Java.lang.IllegalStateException: commit уже вызывается в представлении пейджера с Tablayout

Я использую View pager с Tablayout в моем проекте. Я постоянно получаю краш-отчет о краштиках. Ниже показана трассировка стека.

java.lang.IllegalStateException: commit already called at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:624) at android.support.v4.app.BackStackRecord.commitAllowingStateLoss(BackStackRecord.java:620) at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:161) at android.support.v4.view.ViewPager.d(ViewPager.java:1105) at android.support.v4.view.ViewPager.d(ViewPager.java:951) at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1473) at android.view.View.measure(View.java:15635) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919) at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at android.view.View.measure(View.java:15635) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1411) at android.widget.LinearLayout.measureVertical(LinearLayout.java:698) at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) at android.view.View.measure(View.java:15635) at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:681) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461) at android.view.View.measure(View.java:15635) at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:868) at android.view.View.measure(View.java:15635) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919) at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at android.support.v7.internal.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:124) at android.view.View.measure(View.java:15635) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1411) at android.widget.LinearLayout.measureVertical(LinearLayout.java:698) at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) at android.view.View.measure(View.java:15635) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919) at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at android.view.View.measure(View.java:15635) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1411) at android.widget.LinearLayout.measureVertical(LinearLayout.java:698) at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) at android.view.View.measure(View.java:15635) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919) at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2200) at android.view.View.measure(View.java:15635) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2165) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1249) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1443) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1139) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4872) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:776) at android.view.Choreographer.doCallbacks(Choreographer.java:579) at android.view.Choreographer.doFrame(Choreographer.java:548) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:762) at android.os.Handler.handleCallback(Handler.java:800) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5371) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) at dalvik.system.NativeStart.main(NativeStart.java) 
public class TabsPagerAdapter extends FragmentStatePagerAdapter < Context context; ViewPager pager; int count; public TabsPagerAdapter(FragmentManager fm, Context context, ViewPager pager ) < super(fm); this.context = context; this.pager = pager; >@Override public CharSequence getPageTitle(int position) < return ActivityMain.setdynamicTabsNames.get(position); >@Override public Fragment getItem(int index) < if (ActivityMain.setdynamicTabs.get(index).equalsIgnoreCase("HOME")) < return new FragmentIndex(); else < return new FragmentDynamicTab(index); >> @Override public int getCount() < return ActivityMain.setdynamicTabs.size(); >@Override public void destroyItem(ViewGroup container, int position, Object object) < // supertabLayout.destroyItemsetupWithViewPager(container, position, objectviewPager); >public void setCount(int count) < this.count = count; >> 

Я устанавливаю tablayout, как это в java-коде

Читайте также:  Градиентный бустинг python пример scikit

Я воспользовался всеми возможными решениями, доступными для этой ошибки. Но ни один из них не работает. Я не могу отследить, что вызывает это исключение. Любая помощь будет оценена.

Источник

Русские Блоги

java.lang.IllegalStateException commit already called

java.lang.IllegalStateException commit already called

Используйте время фрагмента сегодня, как показано на рисунке ниже:

Проанализируйте причины

Причина, по которой сообщается об этой ошибке, заключается вFragment Дела — это глобальная переменная, которая может быть совершена только один раз.

Решение:

Определите фрагментную транзакцию как локальную переменную и получайте новые транзакции каждый раз, когда вы отправляетесь в коммит.

Интеллектуальная рекомендация

[Отчет о соревнованиях] 2018.10.31 Онлайн-конкурс Niu Ke [Niu Ke OI Weekly Tournament 2-Improve Group] Практика раунда NOIP 29

Конкурсная ссылка А. Игра трахается Ссылка на заголовок резюме Удивительная конвергенция, этот NM — удар сокращения размера Б. Кекс трахается Ссылка на заголовок резюме Найти правила снова . я табле.

Spring Boot Project git push giteee

Не создавайте readme.md, чтобы создать совершенно пустой проект при создании проекта на Gitee $ git init Инициализированный git $ git status $ git add . $ .

Механизм копирования при записи, чтобы понять

Во-первых, копирование на запись под Linux Прежде чем объяснить механизм копирования при записи в Linux, мы должны сначала знать две функции:fork()иexec(), Обратите внимание, чтоexec()Это не конкретна.

Python Learning — марина

Только поддерживает реализацию функций, таких как функции в Python, и содержание Pickle невидимо. При чтении необходимо исходное содержание Маринованное письмо: Чтение Pickle: Уведомлени.

1 Среда развертывания

Справочник статей 1 Ввести зависимости 1.1 Удаленный импорт 1.2 Местное введение 1 Ввести зависимости 1.1 Удаленный импорт 1.2 Местное введение.

Источник

Оцените статью