0

私のプログラムFragments with ViewPagerでは、それぞれFragmentが含まれている3 checkboxesを使用しています。put a conditionユーザーが何も持っていない場合checkedは、いつにcheckbox切り替えないでください。other fragmentswipe

が何であるかは知っていますが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;
    }

}
4

1 に答える 1

0

より良いアイデアは、ビューページャーのスワイプを無効にしてから再度許可することです。そのため、カスタムのものを作成してメソッドを使用します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" />

参照: (私は著作権を信じています :-))

ViewPagerで指でスワイプしてページングを無効にするにはどうすればよいですか?プログラムでスワイプすることはできますか?

于 2014-08-30T05:55:31.523 に答える