从 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());
getSupportFragmentManager
是 FragmentActivity
的方法,不属于 Activity
,所以你的 activity class 必须实现 FragmentActivity
。注意你应该导入包 com.support.v4.app.FragmentManager
,而不是 android.app.FragmentManager
.
我想从 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());
getSupportFragmentManager
是 FragmentActivity
的方法,不属于 Activity
,所以你的 activity class 必须实现 FragmentActivity
。注意你应该导入包 com.support.v4.app.FragmentManager
,而不是 android.app.FragmentManager
.