- java.lang.IllegalStateException: commit already called in view pager with Tablayout
- Harry Sharma
- 1 Answers
- Java.lang.IllegalStateException: commit уже вызывается в представлении пейджера с Tablayout
- Русские Блоги
- java.lang.IllegalStateException commit already called
- java.lang.IllegalStateException commit already called
- Проанализируйте причины
- Решение:
- Интеллектуальная рекомендация
- [Отчет о соревнованиях] 2018.10.31 Онлайн-конкурс Niu Ke [Niu Ke OI Weekly Tournament 2-Improve Group] Практика раунда NOIP 29
- Spring Boot Project git push giteee
- Механизм копирования при записи, чтобы понять
- Python Learning — марина
- 1 Среда развертывания
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
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.
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-коде
Я воспользовался всеми возможными решениями, доступными для этой ошибки. Но ни один из них не работает. Я не могу отследить, что вызывает это исключение. Любая помощь будет оценена.
Русские Блоги
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 Местное введение.