2014-08-30 41 views
0

在我的節目我使用Fragments with ViewPager,其中每個Fragment包含3 checkboxes落實上查看變化情況,我想如果put a condition用戶還沒有任何checkedcheckbox的不切換到other fragmentswipe如何使用ViewPager

我知道什麼可能是condition,但我不知道where to put

conditionwork我,但where to use不知道:

if(!cb1.isChecked() && !cb2.isChecked() && !cb3.isChecked()) 
      { 
       Toast.makeText(getActivity(), "Choose any one !", Toast.LENGTH_SHORT).show(); 
       return view; 
      } 

MainActivity.java:-

public class MainActivity extends FragmentActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // Get the view from activity_main.xml 
     setContentView(R.layout.activity_main); 

     // Locate the viewpager in activity_main.xml 
     ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 

     // Set the ViewPagerAdapter into ViewPager 
     viewPager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager())); 

    } 

} 

ViewPagerAdapter.java:-

public class ViewPagerAdapter extends FragmentPagerAdapter { 

    final int PAGE_COUNT = 2; 
    // Tab Titles 
    private String tabtitles[] = new String[] { 
      "Fragment 1", 
      "Fragment 2" 
      }; 

    Context context; 

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

    @Override 
    public int getCount() { 
     return PAGE_COUNT; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 

      // Open FragmentTab1.java 
     case 0: 
      FragmentTab1 fragmenttab1 = new FragmentTab1(); 
      return fragmenttab1; 

      // Open FragmentTab2.java 
     case 1: 
      FragmentTab2 fragmenttab2 = new FragmentTab2(); 
      return fragmenttab2; 

     } 
     return null; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return tabtitles[position]; 
    } 
} 

FragmentTab1.java:-

public class FragmentTab1 extends Fragment { 

    View view; 
    CheckBox cb1, cb2, cb3; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // Get the view from fragmenttab1.xml 
     view = inflater.inflate(R.layout.fragmenttab1, container, false); 

     cb1 = (CheckBox) view.findViewById(R.id.cb1); 
     cb2 = (CheckBox) view.findViewById(R.id.cb2); 
     cb3 = (CheckBox) view.findViewById(R.id.cb3); 

     // control status of body frame checkboxes 
     cb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       // TODO Auto-generated method stub 
       if(isChecked){ 
        cb2.setChecked(false); 
        cb3.setChecked(false);  
       } 
      } 
     }); 

     cb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       // TODO Auto-generated method stub 
       if(isChecked){ 
        cb1.setChecked(false); 
        cb3.setChecked(false); 
       } 
      } 
     }); 

     cb3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       // TODO Auto-generated method stub 
       if(isChecked){ 
        cb1.setChecked(false); 
        cb2.setChecked(false); 
       } 
      } 
     });   

    /** 
    ** if(!cb1.isChecked() && !cb2.isChecked() && !cb3.isChecked()) 
     { 
      Toast.makeText(getActivity(), "Choose any one !", Toast.LENGTH_SHORT).show(); 
      return view; 
     } 
    ***/  

     return view; 
    } 

} 
+0

不知道......給人以[OnPageChangeListener]一試(http://developer.android.com/reference/android/support/v4/view/ViewPager.OnPageChangeListener.html).. – 2014-08-30 05:37:08

回答

0

更好的主意是從刷卡禁用viewpager,然後再允許它這樣創建自定義一個,使用方法setPagingEnabled(boolean enabled)

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; 
} } 

,並在你的XML你需要:

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

參考: (我相信版權:-) )

How do disable paging by swiping with finger in ViewPager but still be able to swipe programmatically?