From 829b75f87cdcd08499582ef1099a27f78b46e929 Mon Sep 17 00:00:00 2001 From: Ebrahim Byagowi Date: Wed, 15 Apr 2020 17:23:24 +0430 Subject: [PATCH] Revert ViewPager2 use in ItemPagerFragment Because of "accidentally switch to another page when trying to scroll up/down" https://github.com/AntennaPod/AntennaPod/pull/4020#discussion_r407258369 Will revert this once we reached to a solution for it. --- .../fragment/ItemPagerFragment.java | 45 +++++++++++-------- app/src/main/res/layout/feeditem_fragment.xml | 16 +++---- .../res/layout/feeditem_pager_fragment.xml | 2 +- 3 files changed, 33 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemPagerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemPagerFragment.java index 0c7eb23d205..aac89a65fd8 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemPagerFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemPagerFragment.java @@ -7,30 +7,29 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import androidx.core.view.ViewCompat; import androidx.fragment.app.Fragment; -import androidx.viewpager2.adapter.FragmentStateAdapter; -import androidx.viewpager2.widget.ViewPager2; - -import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.Subscribe; -import org.greenrobot.eventbus.ThreadMode; - +import androidx.fragment.app.FragmentStatePagerAdapter; +import androidx.viewpager.widget.ViewPager; import de.danoeh.antennapod.R; +import de.danoeh.antennapod.activity.CastEnabledActivity; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.core.event.FeedItemEvent; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.storage.DBReader; +import de.danoeh.antennapod.core.util.Flavors; import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; /** * Displays information about a list of FeedItems. @@ -42,7 +41,7 @@ public class ItemPagerFragment extends Fragment { /** * Creates a new instance of an ItemPagerFragment. * - * @param feeditems The IDs of the FeedItems that belong to the same list + * @param feeditems The IDs of the FeedItems that belong to the same list * @param feedItemPos The position of the FeedItem that is currently shown * @return The ItemFragment instance */ @@ -77,21 +76,31 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c feedItems = getArguments().getLongArray(ARG_FEEDITEMS); int feedItemPos = getArguments().getInt(ARG_FEEDITEM_POS); - ViewPager2 pager = layout.findViewById(R.id.pager); + ViewPager pager = layout.findViewById(R.id.pager); // FragmentStatePagerAdapter documentation: // > When using FragmentStatePagerAdapter the host ViewPager must have a valid ID set. // When opening multiple ItemPagerFragments by clicking "item" -> "visit podcast" -> "item" -> etc, // the ID is no longer unique and FragmentStatePagerAdapter does not display any pages. int newId = ViewCompat.generateViewId(); pager.setId(newId); - pager.setAdapter(new ItemPagerAdapter(this)); - pager.setCurrentItem(feedItemPos, false); + pager.setAdapter(new ItemPagerAdapter()); + pager.setCurrentItem(feedItemPos); loadItem(feedItems[feedItemPos]); - pager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { + pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + @Override public void onPageSelected(int position) { loadItem(feedItems[position]); } + + @Override + public void onPageScrollStateChanged(int state) { + + } }); EventBus.getDefault().register(this); @@ -164,20 +173,20 @@ private void openPodcast() { ((MainActivity) getActivity()).loadChildFragment(fragment); } - private class ItemPagerAdapter extends FragmentStateAdapter { + private class ItemPagerAdapter extends FragmentStatePagerAdapter { - ItemPagerAdapter(@NonNull Fragment fragment) { - super(fragment); + ItemPagerAdapter() { + super(getFragmentManager(), BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); } @NonNull @Override - public Fragment createFragment(int position) { + public Fragment getItem(int position) { return ItemFragment.newInstance(feedItems[position]); } @Override - public int getItemCount() { + public int getCount() { return feedItems.length; } } diff --git a/app/src/main/res/layout/feeditem_fragment.xml b/app/src/main/res/layout/feeditem_fragment.xml index 8dfbbe56235..fe1063d855f 100644 --- a/app/src/main/res/layout/feeditem_fragment.xml +++ b/app/src/main/res/layout/feeditem_fragment.xml @@ -171,18 +171,12 @@ - - - - - + android:layout_below="@id/header" + android:layout_height="match_parent" + android:foreground="?android:windowContentOverlay" /> -