I have a Fragment
inside my app which contains a ViewPager
. I have a String
variable code. If code
equals "NBG" I want to disable swipe of the ViewPager
.
public class CurrencyFragment extends BaseFragment {
@Override
public View onCreateView(final LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_currency_layout, container, false);
mViewpager = (ViewPager) view.findViewById(R.id.Detailpager);
Bundle bundle = getArguments();
if (bundle != null) {
code = object.getCode();
}
if (code.equals("NBG")) {
CustomViewPager pager = new CustomViewPager(getActivity(), null);
pager.setPagingEnabled(false);
}
return view;
};
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;
}
}
You're using two different ViewPager
s. The ViewPager
that's initialized using View.findViewById
isn't the same as the CustomViewPager
being created when code.equals(NBG)
.
In fragment_currency_layout
instead of using android.support.v4.view.ViewPager
, use path_to_CustomViewPager
. Then call mViewpager.setPagingEnabled
instead of pager.setPagingEnabled
.