package aws.apps.usbDeviceEnumerator.ui.debug; import android.content.Context; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.view.ViewGroup; import java.util.HashSet; import java.util.Set; import aws.apps.usbDeviceEnumerator.R; import aws.apps.usbDeviceEnumerator.ui.debug.fragments.DeviceDumpFragment; import aws.apps.usbDeviceEnumerator.ui.debug.fragments.DirectoryDumpFragment; import aws.apps.usbDeviceEnumerator.ui.debug.fragments.DirectoryDumpNativeFragment; /*package*/ class TabAdapter extends FragmentPagerAdapter { private static Class<?>[] FRAGMENT_ARRAY = { DirectoryDumpFragment.class, DirectoryDumpNativeFragment.class, DeviceDumpFragment.class, }; private static int[] TITLE_ARRAY = { R.string.label_tab_directory_dump, R.string.label_tab_directory_dump_native, R.string.label_tab_device_dump, }; private final Set<Fragment> registeredFragments = new HashSet<>(); private final Context context; public TabAdapter(Context context, FragmentManager fm) { super(fm); this.context = context.getApplicationContext(); } @Override public int getCount() { return FRAGMENT_ARRAY.length; } @Override public CharSequence getPageTitle(int position) { return context.getString(TITLE_ARRAY[position]); } @Override public Fragment getItem(int position) { final Fragment fragment = Fragment.instantiate(context, FRAGMENT_ARRAY[position].getName()); registeredFragments.add(fragment); return fragment; } @Override public void destroyItem(ViewGroup container, int position, Object object) { super.destroyItem(container, position, object); registeredFragments.remove(object); } @Override public Object instantiateItem(ViewGroup container, int position) { final Object fragment = super.instantiateItem(container, position); registeredFragments.add((Fragment) fragment); return fragment; } public Set<Fragment> getItems() { return registeredFragments; } }