如何使用FragmentPagerAdapter在片段之间滑动

时间:2015-08-31 02:16:04

标签: android android-fragments swipe fragmentpageradapter

我无法弄清楚为什么我的碎片之间的滑动不起作用,

这是我的自定义FragmentPagerAdapter

public class TabsPagerAdapter extends FragmentPagerAdapter {

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

@Override
public Fragment getItem(int index) {

    switch (index) {
        case 0:
            return new PrearrivalPlan();
        case 1:
            return new PrimarySurvey();
        case 2:
            return new Vitals();
        case 3:
            return new SecondarySurvey();
        case 4:
            return new PrepareForTravel();
    }

    return null;
}

@Override
public int getCount() {
    // get item count - equal to number of tabs
    return 5;
}

}

这是我使用它的活动:

public class MainActivity extends FragmentActivity implements ActionBar.TabListener {

private CustomViewPager  viewPager;
private TabsPagerAdapter tabsPagerAdapter;
private ActionBar        actionBar;

private String[] tabTitles = {"Pre-arrival Plan", "Primary Survey", "Vitals", "Secondary Survey", "Prepare for Travel"};
private int      totalTabs = 5;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    viewPager = (CustomViewPager) findViewById(R.id.pager);
    actionBar = getActionBar();
    tabsPagerAdapter = new TabsPagerAdapter(getSupportFragmentManager());

    viewPager.setAdapter(tabsPagerAdapter);
    viewPager.setPagingEnabled(false);

    actionBar.setHomeButtonEnabled(true);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    viewPager.setOnPageChangeListener(new CustomViewPager.OnPageChangeListener() {

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
            actionBar.setSelectedNavigationItem(position);
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }

    });

    viewPager.setOffscreenPageLimit(totalTabs);

    // Remove Android icon from Action Bar
    getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
    getActionBar().setDisplayShowHomeEnabled(false);

    // Add tabs to Action Bar
    for (String tab_name : tabTitles) {
        SpannableString s = new SpannableString(tab_name);
        s.setSpan(new TypefaceSpan("helveticaneuelight.ttf"), 0, s.length(),
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        actionBar.addTab(actionBar.newTab().setText(s).setTabListener(this));
    }

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

public void updateTabTitles(int tabNumber, int checkBoxesRemaining) {
    String text = tabTitles[tabNumber] + "\n  (" + checkBoxesRemaining + " unchecked)";

    actionBar.getTabAt(tabNumber).setText(text);
}

@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
    viewPager.setCurrentItem(tab.getPosition());
}

@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {

}

@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

        case android.R.id.home:
            Intent intent = new Intent(this, MainMenu.class);
            startActivity(intent);
            return true;

        case R.id.complete:
            DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    switch (which){
                        case DialogInterface.BUTTON_POSITIVE:
                            goToReport();
                            break;
                        case DialogInterface.BUTTON_NEGATIVE:
                            // "No" button clicked, do nothing
                            break;
                    }
                }
            };
            AlertDialog.Builder builder = new AlertDialog.Builder(this);

            builder.setMessage("Are you sure you want to complete the checklist?").setPositiveButton("Yes", dialogClickListener).setNegativeButton("No", dialogClickListener).show();
            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}

public void goToReport() {
    Intent intent = new Intent(this, Report.class);
    startActivity(intent);
}
};

1 个答案:

答案 0 :(得分:1)

可能是这个viewPager.setPagingEnabled(false);方法吗?尝试使用该方法,或者至少将其设置为true。