这是我的代码; Addviewer,dataviewer和settingsviewer是我的片段类。我希望在初始化期间为每个方法提供一个标记,以便我可以在另一个片段或主要活动中使用它们。
import java.util.ArrayList;
import java.util.HashMap;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.view.ViewGroup;
public class viewPagerAdapter extends FragmentPagerAdapter {
ArrayList<Fragment> arf;
public viewPagerAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
arf = new ArrayList<Fragment>();
arf.add(new DataViewer());
arf.add(new AddViewer());
arf.add(new SettingsViewer());
}
@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
return arf.get(arg0);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return arf.size();
}
}
答案 0 :(得分:0)
使用PagerAdapter的instantiateItem(...)和destroyItem(...)方法来跟踪Fragment的创建/销毁。或者你总是可以在构造过程中在Fragment上设置Arguments(Bundle b)。实施例
private SparseArray<Fragment> registeredFragments = new SparseArray<>();
@Override
public Object instantiateItem(ViewGroup container, int position) {
Fragment fragment = (Fragment) super.instantiateItem(container, position);
//TODO check if it's the type you want, and set the tag
registeredFragments.put(position, fragment);
return fragment;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
registeredFragments.remove(position);
}