2014-02-26 42 views
0

您好,我的應用程序中有一個Fragment,其中包含ViewPager。我有一個String變量代碼。如果code等於「NBG」,我想要禁用刷卡的ViewPager無法禁用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; 
} } 

回答

2

您正在使用兩種不同的ViewPager s。使用View.findViewById初始化的ViewPagercode.equals(NBG)時創建的CustomViewPager不同。

fragment_currency_layout而不是使用android.support.v4.view.ViewPager,請使用path_to_CustomViewPager。然後撥打mViewpager.setPagingEnabled而不是pager.setPagingEnabled

+0

我試過以下方法,但我無法在mViewpager上調用此方法。 – user3314123

+1

您在調用它時需要投射'CustomViewPager',或者不是將'mViewPager'聲明爲'ViewPager',而是使用'CustomViewPager'。 – adneal

+0

現在它的作品非常感謝:) – user3314123

2

mViewpager = (ViewPager) view.findViewById(R.id.Detailpager);

在你的XML佈局,在那裏你宣佈你ViewPager,你應該宣佈你CustomViewPager代替。 CustomViewPager將需要在它自己的文件中。

當前,您正在實例化常規ViewPager(我假設,因爲您沒有給出XML代碼)。然後,你做:

CustomViewPager pager = new CustomViewPager(getActivity(), null); 
pager.setPagingEnabled(false); 

但是,這是你實例化一個額外ViewPager這是不相關的在屏幕的任何UI。