Search code examples
androidandroid-fragmentsandroid-framelayout

Is there a way to stop a fragment 1 going to fragment 2 when I swipe?


is there a way to stop fragment 1 going to fragment 2 when I swipe right/left I noticed recently that if I swipe left my fragment changes from 1 to 2.

I searched on web but I couldn't find an answer

Edit:

My code for adapter

    public ViewPager viewPager;
    private ViewPagerAdapter adapter



    adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.AddFragment(new Fragment_Sign_In_To_Firebase(), "Firebase Sign In");
    adapter.AddFragment(new Fragment_Create_Account(), "Create Account");
    adapter.AddFragment(new Fragment_Verify_Email(), "Verify Email");


    viewPager = (ViewPager) findViewById(R.id.viewpager_id_chat);
    viewPager.setAdapter(adapter);
    viewPager.arrowScroll(View.FOCUS_RIGHT);

ViewPaggerAdapter class:

public class ViewPagerAdapter extends FragmentPagerAdapter {

private final List<Fragment> lstFragment = new ArrayList<>();
private final List<String> lstTitles = new ArrayList<>();

public ViewPagerAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int position) {
    return lstFragment.get(position);
}

@Override
public int getCount() {
    return lstTitles.size();
}

@Override
public CharSequence getPageTitle(int position) {
    return lstTitles.get(position);
}

public void AddFragment(Fragment fragment, String title) {
    lstFragment.add(fragment);
    lstTitles.add(title);
}
}

Solution

  • As I can see your question is not having a proper query on what you are searching for exactly ,I think you are talking about ViewPager

     public class CustomViewPager extends ViewPager {
    
        private boolean enabled;
    
        public CustomViewPager(Context context, AttributeSet attrs) {
            super(context, attrs);
            this.enabled = true;
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            if (this.enabled) {
                return super.onTouchEvent(event);
            }
    
            return false;
        }
    
        @Override
        public boolean onInterceptTouchEvent(MotionEvent event) {
            if (this.enabled) {
                return super.onInterceptTouchEvent(event);
            }
    
            return false;
        }
    
        public void setPagingEnabled(boolean enabled) {
            this.enabled = enabled;
        } }
    

    Use this in your XML

    <mypackage.CustomViewPager 
        android:id="@+id/myViewPager" 
        android:layout_height="match_parent" 
        android:layout_width="match_parent" />
    

    OR SIMPLE ADD THIS LINE

    myViewPager.beginFakeDrag();