如何在 viewpager 适配器中初始化它们时将标签添加到我的片段
How to add tags to my fragments during initialising them inside a view pager adapter
这是我的代码; Addviewer、dataviewer 和 settingviewer 是我的片段 class。我想在初始化期间给每个方法一个标记,以便我可以在另一个片段或 mainactivity 中使用它们。
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();
}
}
使用 PagerAdapter 的 instantiateItem(...) 和 destroyItem(...) 方法来跟踪片段的 creation/destruction。或者你总是可以在构建过程中对你的 Fragment 进行 setArguments(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);
}
这是我的代码; Addviewer、dataviewer 和 settingviewer 是我的片段 class。我想在初始化期间给每个方法一个标记,以便我可以在另一个片段或 mainactivity 中使用它们。
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();
}
}
使用 PagerAdapter 的 instantiateItem(...) 和 destroyItem(...) 方法来跟踪片段的 creation/destruction。或者你总是可以在构建过程中对你的 Fragment 进行 setArguments(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);
}