From 9b4a99bdf1fc64be131904ac7a146f91266017b7 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 4 Apr 2018 12:09:44 +0300 Subject: add workaround for FragmentStatePagerAdapter causing bundler exception, thanks google --- .../src/main/java/org/fox/ttrss/ArticlePager.java | 10 ++++++++++ .../java/org/fox/ttrss/offline/OfflineArticlePager.java | 16 +++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) mode change 100644 => 100755 org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticlePager.java (limited to 'org.fox.ttrss/src/main/java') diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java index e0714786..0b9fe6c6 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java @@ -6,6 +6,7 @@ import android.content.SharedPreferences; import android.os.BadParcelableException; import android.os.Bundle; import android.os.Handler; +import android.os.Parcelable; import android.preference.PreferenceManager; import android.support.design.widget.Snackbar; import android.support.v4.app.ClassloaderWorkaroundFragmentStatePagerAdapter; @@ -52,6 +53,15 @@ public class ArticlePager extends StateSavedFragment { private ArticleFragment m_currentFragment; + // workaround for possible TransactionTooLarge exception on 8.0+ + // we don't need to save member state anyway, bridge takes care of it + @Override + public Parcelable saveState() { + Bundle bundle = (Bundle) super.saveState(); + bundle.putParcelableArray("states", null); // Never maintain any states from the base class, just null it out + return bundle; + } + @Override public Fragment getItem(int position) { try { diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticlePager.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticlePager.java old mode 100644 new mode 100755 index 26bb12d7..bded56b5 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticlePager.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticlePager.java @@ -4,6 +4,7 @@ import android.app.Activity; import android.content.SharedPreferences; import android.database.Cursor; import android.os.Bundle; +import android.os.Parcelable; import android.preference.PreferenceManager; import android.provider.BaseColumns; import android.support.v4.app.Fragment; @@ -89,6 +90,15 @@ public class OfflineArticlePager extends Fragment { super(fm); } + // workaround for possible TransactionTooLarge exception on 8.0+ + // we don't need to save member state anyway, bridge takes care of it + @Override + public Parcelable saveState() { + Bundle bundle = (Bundle) super.saveState(); + bundle.putParcelableArray("states", null); // Never maintain any states from the base class, just null it out + return bundle; + } + @Override public Fragment getItem(int position) { Log.d(TAG, "getItem: " + position); @@ -166,11 +176,11 @@ public class OfflineArticlePager extends Fragment { } - ViewPager pager = (ViewPager) view.findViewById(R.id.article_pager); + ViewPager pager = view.findViewById(R.id.article_pager); pager.setAdapter(m_adapter); - UnderlinePageIndicator indicator = (UnderlinePageIndicator)view.findViewById(R.id.article_pager_indicator); + UnderlinePageIndicator indicator = view.findViewById(R.id.article_pager_indicator); indicator.setViewPager(pager); pager.setCurrentItem(position); @@ -243,7 +253,7 @@ public class OfflineArticlePager extends Fragment { int position = getArticleIdPosition(articleId); - ViewPager pager = (ViewPager) getView().findViewById(R.id.article_pager); + ViewPager pager = getView().findViewById(R.id.article_pager); pager.setCurrentItem(position); -- cgit v1.2.3