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

This commit is contained in:
Tobias Brunner
2021-07-13 14:26:38 +02:00
parent c976165533
commit a8cc146240
2 changed files with 27 additions and 24 deletions
@@ -15,7 +15,6 @@
package org.strongswan.android.ui; package org.strongswan.android.ui;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
@@ -23,6 +22,7 @@ import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
import org.strongswan.android.R; import org.strongswan.android.R;
import org.strongswan.android.data.VpnProfileDataSource; import org.strongswan.android.data.VpnProfileDataSource;
@@ -35,19 +35,20 @@ import java.security.KeyStore;
import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts; import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentPagerAdapter; import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager.widget.ViewPager; import androidx.viewpager2.widget.ViewPager2;
public class TrustedCertificatesActivity extends AppCompatActivity implements TrustedCertificateListFragment.OnTrustedCertificateSelectedListener, OnCertificateDeleteListener public class TrustedCertificatesActivity extends AppCompatActivity implements TrustedCertificateListFragment.OnTrustedCertificateSelectedListener, OnCertificateDeleteListener
{ {
public static final String SELECT_CERTIFICATE = "org.strongswan.android.action.SELECT_CERTIFICATE"; public static final String SELECT_CERTIFICATE = "org.strongswan.android.action.SELECT_CERTIFICATE";
private static final String DIALOG_TAG = "Dialog"; private static final String DIALOG_TAG = "Dialog";
private TrustedCertificatesPagerAdapter mAdapter; private TrustedCertificatesPagerAdapter mAdapter;
private ViewPager mPager; private ViewPager2 mPager;
private boolean mSelect; private boolean mSelect;
private final ActivityResultLauncher<Intent> mImportCertificate = registerForActivityResult( private final ActivityResultLauncher<Intent> mImportCertificate = registerForActivityResult(
@@ -69,13 +70,15 @@ public class TrustedCertificatesActivity extends AppCompatActivity implements Tr
ActionBar actionBar = getSupportActionBar(); ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true); 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); mPager.setAdapter(mAdapter);
TabLayout tabs = (TabLayout)findViewById(R.id.tabs); 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()); mSelect = SELECT_CERTIFICATE.equals(getIntent().getAction());
} }
@@ -158,28 +161,21 @@ public class TrustedCertificatesActivity extends AppCompatActivity implements Tr
TrustedCertificateManager.getInstance().reset(); TrustedCertificateManager.getInstance().reset();
} }
public static class TrustedCertificatesPagerAdapter extends FragmentPagerAdapter public static class TrustedCertificatesPagerAdapter extends FragmentStateAdapter
{ {
private TrustedCertificatesTab mTabs[]; 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[]{ mTabs = new TrustedCertificatesTab[]{
new TrustedCertificatesTab(context.getString(R.string.system_tab), TrustedCertificateSource.SYSTEM), new TrustedCertificatesTab(fragmentActivity.getString(R.string.system_tab), TrustedCertificateSource.SYSTEM),
new TrustedCertificatesTab(context.getString(R.string.user_tab), TrustedCertificateSource.USER), new TrustedCertificatesTab(fragmentActivity.getString(R.string.user_tab), TrustedCertificateSource.USER),
new TrustedCertificatesTab(context.getString(R.string.local_tab), TrustedCertificateSource.LOCAL), new TrustedCertificatesTab(fragmentActivity.getString(R.string.local_tab), TrustedCertificateSource.LOCAL),
}; };
} }
@Override public CharSequence getTitle(int position)
public int getCount()
{
return mTabs.length;
}
@Override
public CharSequence getPageTitle(int position)
{ {
return mTabs[position].getTitle(); return mTabs[position].getTitle();
} }
@@ -190,7 +186,14 @@ public class TrustedCertificatesActivity extends AppCompatActivity implements Tr
} }
@Override @Override
public Fragment getItem(int position) public int getItemCount()
{
return mTabs.length;
}
@NonNull
@Override
public Fragment createFragment(int position)
{ {
TrustedCertificateListFragment fragment = new TrustedCertificateListFragment(); TrustedCertificateListFragment fragment = new TrustedCertificateListFragment();
Bundle args = new Bundle(); Bundle args = new Bundle();
@@ -26,7 +26,7 @@
app:tabGravity="fill" app:tabGravity="fill"
app:tabMode="fixed"/> app:tabMode="fixed"/>
<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="0dp" android:layout_height="0dp"