Reputation: 1481
I am working on android TabLayout with swipe functionality. I used fragment to navigate inside the tablayout.
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(
getSupportFragmentManager());
adapter.addFragment(new OneFragment(), "One");
adapter.addFragment(new TwoFragment(), "Two");
adapter.addFragment(new ThreeFragment(), "Three");
adapter.addFragment(new FourFragment(), "Four");
adapter.addFragment(new FivetFragment(), "Five");
adapter.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (isGoingToRightPage && isNavigated
&& dragging == ViewPager.SCROLL_STATE_DRAGGING) {
if (mLastPage == position)
navigateToLoginScreen();
} else {
//do nothing
}
}
@Override
public void onPageSelected(int position) {
if (position == APP_INTRO_TOTAL - 1) {
isGoingToRightPage = true;
} else {
isGoingToRightPage = false;
}
mLastPage = position;
}
@Override
public void onPageScrollStateChanged(int state) {
dragging = state;
}
});
private void navigateToLoginScreen() {
isNavigated = false;
Intent intent = new Intent(AppIntroActivity.this, LoginActivity.class);
startActivity(intent);
finish();
}
viewPager.setAdapter(adapter);
}
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
When user swipe the Fragment inside the TabLayout, the Fragments navigate left and right. Here FivetFragment()
is the last fragment in Tablayout. If i swipe left from FivetFragment()
fragment, currently nothing happens because FivetFragment()
is the last fragment in that TabLayout. I want to navigate to next activity called Profile.Java
when i swipe left from FivetFragment()
fragment.
Is it possible to navigate from an Fragment to Profile
Activity on swipe the Fragment.
Please help me to do this in android.
Upvotes: 1
Views: 601
Reputation: 2670
just override your viewpager.addOnPageChangeListener. and add following code
adapter.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (isGoingToRightPage && isNavigated
&& dragging == ViewPager.SCROLL_STATE_DRAGGING) {
if (mLastPage == position)
navigateToLoginScreen();
} else {
//do nothing
}
}
@Override
public void onPageSelected(int position) {
if (position == APP_INTRO_TOTAL - 1) {
isGoingToRightPage = true;
} else {
isGoingToRightPage = false;
}
mLastPage = position;
}
@Override
public void onPageScrollStateChanged(int state) {
dragging = state;
}
});
private void navigateToLoginScreen() {
isNavigated = false;
Intent intent = new Intent(AppIntroActivity.this, LoginActivity.class);
startActivity(intent);
finish();
}
define these globally
int mLastPage;
boolean isGoingToRightPage;
boolean isNavigated = true;
int dragging;
Upvotes: 1