android: Migrate from deprecated ViewPager to ViewPager2 for CA cert lists

This commit is contained in:
Tobias Brunner 2021-07-12 17:17:00 +02:00
parent c976165533
commit a8cc146240
2 changed files with 27 additions and 24 deletions

View File

@ -15,7 +15,6 @@
package org.strongswan.android.ui;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
@ -23,6 +22,7 @@ import android.view.Menu;
import android.view.MenuItem;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
import org.strongswan.android.R;
import org.strongswan.android.data.VpnProfileDataSource;
@ -35,19 +35,20 @@ import java.security.KeyStore;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.ViewPager;
import androidx.fragment.app.FragmentActivity;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
public class TrustedCertificatesActivity extends AppCompatActivity implements TrustedCertificateListFragment.OnTrustedCertificateSelectedListener, OnCertificateDeleteListener
{
public static final String SELECT_CERTIFICATE = "org.strongswan.android.action.SELECT_CERTIFICATE";
private static final String DIALOG_TAG = "Dialog";
private TrustedCertificatesPagerAdapter mAdapter;
private ViewPager mPager;
private ViewPager2 mPager;
private boolean mSelect;
private final ActivityResultLauncher<Intent> mImportCertificate = registerForActivityResult(
@ -69,13 +70,15 @@ public class TrustedCertificatesActivity extends AppCompatActivity implements Tr
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
mAdapter = new TrustedCertificatesPagerAdapter(getSupportFragmentManager(), this);
mAdapter = new TrustedCertificatesPagerAdapter(this);
mPager = (ViewPager)findViewById(R.id.viewpager);
mPager = (ViewPager2)findViewById(R.id.viewpager);
mPager.setAdapter(mAdapter);
TabLayout tabs = (TabLayout)findViewById(R.id.tabs);
tabs.setupWithViewPager(mPager);
new TabLayoutMediator(tabs, mPager, (tab, position) -> {
tab.setText(mAdapter.getTitle(position));
}).attach();
mSelect = SELECT_CERTIFICATE.equals(getIntent().getAction());
}
@ -158,28 +161,21 @@ public class TrustedCertificatesActivity extends AppCompatActivity implements Tr
TrustedCertificateManager.getInstance().reset();
}
public static class TrustedCertificatesPagerAdapter extends FragmentPagerAdapter
public static class TrustedCertificatesPagerAdapter extends FragmentStateAdapter
{
private TrustedCertificatesTab mTabs[];
public TrustedCertificatesPagerAdapter(FragmentManager fm, Context context)
public TrustedCertificatesPagerAdapter(@NonNull FragmentActivity fragmentActivity)
{
super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
super(fragmentActivity);
mTabs = new TrustedCertificatesTab[]{
new TrustedCertificatesTab(context.getString(R.string.system_tab), TrustedCertificateSource.SYSTEM),
new TrustedCertificatesTab(context.getString(R.string.user_tab), TrustedCertificateSource.USER),
new TrustedCertificatesTab(context.getString(R.string.local_tab), TrustedCertificateSource.LOCAL),
new TrustedCertificatesTab(fragmentActivity.getString(R.string.system_tab), TrustedCertificateSource.SYSTEM),
new TrustedCertificatesTab(fragmentActivity.getString(R.string.user_tab), TrustedCertificateSource.USER),
new TrustedCertificatesTab(fragmentActivity.getString(R.string.local_tab), TrustedCertificateSource.LOCAL),
};
}
@Override
public int getCount()
{
return mTabs.length;
}
@Override
public CharSequence getPageTitle(int position)
public CharSequence getTitle(int position)
{
return mTabs[position].getTitle();
}
@ -190,7 +186,14 @@ public class TrustedCertificatesActivity extends AppCompatActivity implements Tr
}
@Override
public Fragment getItem(int position)
public int getItemCount()
{
return mTabs.length;
}
@NonNull
@Override
public Fragment createFragment(int position)
{
TrustedCertificateListFragment fragment = new TrustedCertificateListFragment();
Bundle args = new Bundle();

View File

@ -26,7 +26,7 @@
app:tabGravity="fill"
app:tabMode="fixed"/>
<androidx.viewpager.widget.ViewPager
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"