Merge branch '2056-view-pager-crash' into 'master'

Migrate to ViewPager2 to fix weird ViewPager crash

Closes #2056

See merge request briar/briar!1484
This commit is contained in:
akwizgran
2021-06-17 12:07:04 +00:00
2 changed files with 10 additions and 13 deletions

View File

@@ -33,10 +33,9 @@ import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AlertDialog.Builder; import androidx.appcompat.app.AlertDialog.Builder;
import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import androidx.viewpager.widget.ViewPager; import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
import static android.content.Intent.ACTION_CREATE_DOCUMENT; import static android.content.Intent.ACTION_CREATE_DOCUMENT;
import static android.content.Intent.CATEGORY_OPENABLE; import static android.content.Intent.CATEGORY_OPENABLE;
@@ -76,7 +75,7 @@ public class ImageActivity extends BriarActivity
private ImageViewModel viewModel; private ImageViewModel viewModel;
private PullDownLayout layout; private PullDownLayout layout;
private AppBarLayout appBarLayout; private AppBarLayout appBarLayout;
private ViewPager viewPager; private ViewPager2 viewPager;
private List<AttachmentItem> attachments; private List<AttachmentItem> attachments;
private MessageId conversationMessageId; private MessageId conversationMessageId;
@@ -142,8 +141,7 @@ public class ImageActivity extends BriarActivity
// Set up image ViewPager // Set up image ViewPager
viewPager = findViewById(R.id.viewPager); viewPager = findViewById(R.id.viewPager);
ImagePagerAdapter pagerAdapter = ImagePagerAdapter pagerAdapter = new ImagePagerAdapter();
new ImagePagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(pagerAdapter); viewPager.setAdapter(pagerAdapter);
viewPager.setCurrentItem(position); viewPager.setCurrentItem(position);
@@ -310,16 +308,16 @@ public class ImageActivity extends BriarActivity
return attachments.get(viewPager.getCurrentItem()); return attachments.get(viewPager.getCurrentItem());
} }
private class ImagePagerAdapter extends FragmentStatePagerAdapter { private class ImagePagerAdapter extends FragmentStateAdapter {
private boolean isFirst = true; private boolean isFirst = true;
private ImagePagerAdapter(FragmentManager fm) { private ImagePagerAdapter() {
super(fm); super(ImageActivity.this);
} }
@Override @Override
public Fragment getItem(int position) { public Fragment createFragment(int position) {
Fragment f = ImageFragment.newInstance( Fragment f = ImageFragment.newInstance(
attachments.get(position), conversationMessageId, isFirst); attachments.get(position), conversationMessageId, isFirst);
isFirst = false; isFirst = false;
@@ -327,10 +325,9 @@ public class ImageActivity extends BriarActivity
} }
@Override @Override
public int getCount() { public int getItemCount() {
return attachments.size(); return attachments.size();
} }
} }
} }

View File

@@ -7,7 +7,7 @@
android:background="@android:color/black" android:background="@android:color/black"
tools:context=".android.conversation.ImageActivity"> tools:context=".android.conversation.ImageActivity">
<androidx.viewpager.widget.ViewPager <androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager" android:id="@+id/viewPager"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />