Fixed TabLayout tab select not working

This commit is contained in:
mirk0dex 2024-01-27 21:07:17 +01:00
parent a8fe19ea6b
commit 36b9ae5288
3 changed files with 31 additions and 55 deletions

View file

@ -10,9 +10,10 @@ import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
public class MainActivity extends AppCompatActivity {
private static String[] names;
private static int[] names;
/**
* The pager widget, which handles animation and allows swiping horizontally to access previous
@ -31,31 +32,15 @@ public class MainActivity extends AppCompatActivity {
FragmentStateAdapter pagerAdapter = new ScreenSlidePagerAdapter(this);
viewPager.setAdapter(pagerAdapter);
names = new String[pagerAdapter.getItemCount()];
names[0] = getString(R.string.clock);
names[1] = getString(R.string.converter);
// set up tab names
names = new int[pagerAdapter.getItemCount()];
names[0] = R.string.clock;
names[1] = R.string.converter;
TabLayout tabLayout = findViewById(R.id.tabLayout);
// add tabs
for (int i = 0; i < pagerAdapter.getItemCount(); i++) {
tabLayout.addTab(tabLayout.newTab().setText(getName(i)));
}
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
new TabLayoutMediator(tabLayout, viewPager,
(tab, position) -> tab.setText(getName(position)))
.attach();
}
@Override
@ -75,7 +60,7 @@ public class MainActivity extends AppCompatActivity {
* sequence.
*/
private static class ScreenSlidePagerAdapter extends FragmentStateAdapter {
private static final Fragment[] fragmentClasses = {new ClockFragment(), new ConverterFragment()};
private static final int FRAGMENTSN = 2;
public ScreenSlidePagerAdapter(FragmentActivity fa) {
super(fa);
@ -84,23 +69,23 @@ public class MainActivity extends AppCompatActivity {
@NonNull
@Override
public Fragment createFragment(int position) {
if (position < fragmentClasses.length) {
return fragmentClasses[position];
if (position == 1) {
return new ConverterFragment();
}
return new Fragment() /* empty */;
return new ClockFragment();
}
@Override
public int getItemCount() {
return fragmentClasses.length;
return FRAGMENTSN;
}
}
public String getName(int position) {
public int getName(int position) {
if (position < names.length) {
return names[position];
}
return "";
return -1; // error
}
}

View file

@ -6,30 +6,20 @@
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.coordinatorlayout.widget.CoordinatorLayout
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="@dimen/tablayout_height"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@id/tabLayout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -7,4 +7,5 @@
<dimen name="beats_input_width">333dp</dimen>
<dimen name="radio_spacing">25dp</dimen>
<dimen name="clear_and_convert_side_picker_spacing">50dp</dimen>
<dimen name="tablayout_height">50dp</dimen>
</resources>