【问题标题】:Call FragmentPagerAdapter from activity从活动中调用 FragmentPagerAdapter
【发布时间】:2015-11-06 07:04:50
【问题描述】:

我想从活动创建 FragmentPagerAdapter 适配器。我怎么能做到这一点?

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

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;
}
}

【问题讨论】:

  • @Kartheek 构造函数 FragmentPagerAdapter(FragmentManager, ArrayList) 未定义

标签: android image android-activity fragment


【解决方案1】:

替换

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

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

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

【讨论】:

    【解决方案2】:

    而不是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);
    

    【讨论】:

    • 只要调用getFragmentManager,第一个区域是android源码。
    • @FireSun 不起作用,因为我不在片段中
    • @MadhukarHebbar 感谢您的快速回放,我将从哪里获得变量 mFragments?
    • @FireSun 构造函数 FragmentPagerAdapter(FragmentManager, ArrayList) 未定义
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多