Swipe上的Android ViewPager Bug

时间:2014-10-25 09:50:29

标签: java android android-fragments android-viewpager

我对viewPager有这个奇怪的问题。当我从一个片段滑动到下一个片段然后向后滑动时,布局是正确的,但是当按下一个元素(例如Listview项)时,之前的Java代码仍然没有随视图一起更新。我不知道我是否可以更好地解释这一点,因为当我使用滑动玩法直到碎片像它应该的那样工作时它起作用。这是我的代码:

Main.Java:

public class Main extends FragmentActivity {

SectionsPagerAdapter mAdapter;

ViewPager mViewPager;

// for alert transitions
AlertDialog dialog;

// share button
private ShareActionProvider mShareActionProvider;

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

    // set up button
    getActionBar().setDisplayHomeAsUpEnabled(true);

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    // Create the adapter that will return a fragment for each of the three
    // primary sections of the app.
    mAdapter = new SectionsPagerAdapter(
            getSupportFragmentManager());

    // Set up the ViewPager with the sections adapter.
    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(mAdapter);
    mViewPager.setPageTransformer(true, new DepthPageTransformer());



}

@Override
public void onBackPressed() {
    if (mViewPager.getCurrentItem() == 0) {
        // If the user is currently looking at the first step, allow the system to handle the
        // Back button. This calls finish() on this activity and pops the back stack.
        super.onBackPressed();
    } else {
        // Otherwise, select the previous step.
        mViewPager.setCurrentItem(mViewPager.getCurrentItem() - 1);
    }
}
}

SectionsPagerAdapter.java:

public class SectionsPagerAdapter extends FragmentPagerAdapter {

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

@Override
public Fragment getItem(int position) {

    switch (position){

    case 0:
        return new Important();
    case 1:
        return new Propositions();
    case 2:
        return new Information();
    }
    return null;
}

@Override
public int getCount() {
    // Show 3 total pages.
    return 3;
}



@Override
public CharSequence getPageTitle(int position) {
    Locale l = Locale.getDefault();
    switch (position) {
    case 0:
        return ("Important Dates").toUpperCase(l);
    case 1:
        return ("Props").toUpperCase(l);
    case 2:
        return ("Information").toUpperCase(l);
    }
    return null;
}
}

Fragments都使用onCreateView()方法。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

也许是迟到的回应,但我遇到了同样的问题。 问题是您使用DepthPageTransformer的Android开发者示例中使用的PageTransformer

我认为堆叠片段和图层优先级存在错误。通过修复自定义PageTransformer将修复您的“向后滑动”问题。或者,如果您不介意动画,只需删除自定义PageTransformer并使用默认动画(不添加任何内容)。