diff options
Diffstat (limited to 'app/src/main/java/org/connectbot/ConsoleActivity.java')
-rw-r--r-- | app/src/main/java/org/connectbot/ConsoleActivity.java | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/app/src/main/java/org/connectbot/ConsoleActivity.java b/app/src/main/java/org/connectbot/ConsoleActivity.java index 9ac0c95..0e23979 100644 --- a/app/src/main/java/org/connectbot/ConsoleActivity.java +++ b/app/src/main/java/org/connectbot/ConsoleActivity.java @@ -623,7 +623,7 @@ public class ConsoleActivity extends AppCompatActivity implements BridgeDisconne tabs = (TabLayout) findViewById(R.id.tabs); if (tabs != null) - tabs.setupWithViewPager(pager); + setupTabLayoutWithViewPager(); // detect fling gestures to switch between terminals final GestureDetector detect = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() { @@ -799,6 +799,32 @@ public class ConsoleActivity extends AppCompatActivity implements BridgeDisconne } /** + * Ties the {@link TabLayout} to the {@link ViewPager}. + * + * <p>This method will: + * <ul> + * <li>Add a {@link ViewPager.OnPageChangeListener} that will forward events to + * this TabLayout.</li> + * <li>Populate the TabLayout's tabs from the ViewPager's {@link PagerAdapter}.</li> + * <li>Set our {@link TabLayout.OnTabSelectedListener} which will forward + * selected events to the ViewPager</li> + * </ul> + * </p> + */ + public void setupTabLayoutWithViewPager() { + tabs.setTabsFromPagerAdapter(adapter); + pager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabs)); + tabs.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(pager)); + + if (adapter.getCount() > 0) { + final int curItem = pager.getCurrentItem(); + if (tabs.getSelectedTabPosition() != curItem) { + tabs.getTabAt(curItem).select(); + } + } + } + + /** * */ private void configureOrientation() { |