package org.strongswan.android.ui;
-import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
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;
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(
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());
}
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();
}
}
@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();