从 activity 调用 FragmentPagerAdapter

Call FragmentPagerAdapter from activity

我想从 activity 创建 FragmentPagerAdapter 适配器。我该怎么做?

我在从片段调用时使用过这种方式,但现在我想从 activity。

MyActivity.java

        // here error
            adapter = new FragmentPagerAdapter(getFragmentManager(),
                    images.getImageItem());
            viewPage.setAdapter(adapter);
            viewPage.setOnPageChangeListener(this);

FragmentPagerAdapter.java

public class FragmentPagerAdapter extends FragmentStatePagerAdapter {

private ArrayList<String> itemData;

public FragmentPagerAdapter(FragmentManager fm,
        ArrayList<String> itemData) {
    super(fm);
    this.itemData = itemData;
}
@Override
public int getCount() {
    return itemData.size();
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    super.destroyItem(container, position, object);
}
@Override
public Fragment getItem(int position) {
    FragmentImageView f = FragmentImageView.newInstance();
    f.setImageList(itemData.get(position));
    return f;
}
}

而不是 getFragmentManager 调用 getSupportFragmentManager

 /**
     * Return the FragmentManager for interacting with fragments associated
     * with this activity.
     */
    public FragmentManager getSupportFragmentManager() {
        return mFragments.getSupportFragmentManager();
    }

因此您的代码将是

 adapter = new FragmentPagerAdapter(getSupportFragmentManager(),
                    images.getImageItem());
            viewPage.setAdapter(adapter);
            viewPage.setOnPageChangeListener(this);

替换

adapter = new FragmentPagerAdapter(getFragmentManager(),images.getImageItem());

adapter = new FragmentPagerAdapter(getSupportFragmentManager(),
                images.getImageItem());

getSupportFragmentManagerFragmentActivity 的方法,不属于 Activity,所以你的 activity class 必须实现 FragmentActivity。注意你应该导入包 com.support.v4.app.FragmentManager,而不是 android.app.FragmentManager.