Как реализовать условие при изменении вида с помощью ViewPager
В моей программе я использую Fragments with ViewPager
где каждый Fragment
содержит 3 checkboxes
, и я хочу put a condition
если пользователь не checked
любой из checkbox
не переключайтесь на other fragment
когда swipe
,
Я знаю, что может быть condition
но я не знаю where to put
?
это condition
будут work
для меня, но 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;
}
}
1 ответ
Лучшая идея - отключить просмотр пальцем, а затем снова разрешить его, поэтому создайте пользовательский и используйте метод 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" />
Ссылка: (я верю в авторское право:-))