Reputation: 61
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;
}
}
Upvotes: 0
Views: 1901
Reputation: 15334
mViewpager = (ViewPager) view.findViewById(R.id.Detailpager);
In your XML layout, where you declare your ViewPager, you should declare your CustomViewPager instead. CustomViewPager will need to be in its own file.
Currently, you are instantiating the regular ViewPager (I assume, as you haven't given the XML code). Then you do:
CustomViewPager pager = new CustomViewPager(getActivity(), null);
pager.setPagingEnabled(false);
But this is an extra ViewPager you've instantiated which isn't related to any UI in your screen.
Upvotes: 2
Reputation: 30814
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
.
Upvotes: 2