使用Fragments实现ViewPager时,ViewPager中的所有页面中只有一个页面正在发生变化

时间:2017-03-05 03:21:30

标签: android android-fragments android-viewpager fragmentpageradapter

我一直在尝试使用不同的片段实现ViewPager。

问题是当我在ViewPager中运行应用程序时,在所有页面中,只有一个页面可见,当我滑到ViewPager中的其他页面时,该页面才会被更改。

看一下我的代码,(虽然我多次检查它是否使用在线资源)。

这就是我的每个片段的样子:

public class fragment1 extends Fragment {

/* Variable to store reference to the ACtivity */
Activity mCurrentActivity;

/* Variable storing reference to the ArrayList */
private ArrayList<Word> mDefaultWords;

/**
 * THe empty public Constructor
 */
public fragment1(){

 }

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    /** Getting reference to the Activity */
    mCurrentActivity = getActivity();

// Populating the ArrayList here
// And later in the onActivityCreated callback I set an adapter on the ArrayList

    return inflater.inflate(R.layout.activity_others, container, false);


}

@Override
public void onActivityCreated(Bundle savedStateInstance){

    super .onActivityCreated(savedStateInstance);

    /**
     * Creating {@link ArrayAdapter} to link the {@link String}
     * from {@link ArrayList}                               {@param
     */
    MyAdapter adaptItems = new MyAdapter(mCurrentActivity, mDefaultWords);

    // Getting the id of the ListView in numberActivity.xml
    ListView myList = (ListView) mCurrentActivity.findViewById(R.id.theList);

    //Chaning background color
    myList.setBackgroundColor(ContextCompat.getColor(getContext(), android.R.color.holo_purple));

    // Setting the adapter with the {@link ListView}
    myList.setAdapter(adaptItems);
        }
    }
}

My Activity设置适配器类,将FragmentPagerAdapter扩展为私有内部类,并在ViewPager上设置适配器。

public class Main2Activity extends AppCompatActivity {

private ViewPager mViewPager;
private FragmentPagerAdapter mFragmentStatePagerAdapter;
private FragmentManager mFragmentManager;

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

    mFragmentManager = getSupportFragmentManager();
    mViewPager = (ViewPager) findViewById(R.id.theViewPager);

    mFragmentStatePagerAdapter = new MyFragmentStatePagerAdapter(mFragmentManager);
    /* Setting the apdapter on the pager */
    mViewPager.setAdapter(mFragmentStatePagerAdapter);

}

public class MyFragmentStatePagerAdapter extends FragmentPagerAdapter {

    public MyFragmentStatePagerAdapter(FragmentManager fragmentManager){

        super(fragmentManager);
    }

    @Override
    public int getCount(){

        return 4;
    }

    @Override
    public Fragment getItem(int position) {


        if (position == 0) {
            return new fragment1();
        } else if (position == 1){
            return new fragment2();
        } else if (position == 2) {
            return new fragment3();
        } else {
            return new fragment4();
        }
    }
}
}

这是ViewPager的布局

<android.support.v4.view.ViewPager
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/theViewPager"
    android:visibility="visible" />

正如我所说,当我运行应用程序时,只显示一个页面,其他页面出现在ViewPager中,但它们是空白的并显示默认的背景颜色, 显示的一个页面是我在ViewPager中向左或向右滑动时更改的页面。

那么问题是什么?

1 个答案:

答案 0 :(得分:0)

不要低估这个问题,这是一个真正的问题。 所以,我一路走来,让我说出来。 发生的事情是,我正在研究一个克隆的项目,它有一个旧的gradle版本,sdktools版本也没有更新,而且还很老。 目标的最小API是API 15 我在API 21上测试我的应用程序。 所以,我做的是我为每个片段使用了不同的布局。 这是我创建自己的XML布局的每个片段。 这非常有效。 奇怪的问题,所以我更新了gradle和sdktools,以避免这种奇怪的问题。