Android 如何在视图寻呼机适配器中初始化我的片段时向其添加标记
这是我的密码;Addviewer、dataviewer和settingsviewer是我的片段类。我想在初始化过程中给每个方法一个标记,以便在另一个片段或mainactivity中使用它们Android 如何在视图寻呼机适配器中初始化我的片段时向其添加标记,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,这是我的密码;Addviewer、dataviewer和settingsviewer是我的片段类。我想在初始化过程中给每个方法一个标记,以便在另一个片段或mainactivity中使用它们 import java.util.ArrayList; import java.util.HashMap; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import androi
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();
}
}
import java.util.ArrayList;
导入java.util.HashMap;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentManager;
导入android.support.v4.app.FragmentPagerAdapter;
导入android.view.ViewGroup;
公共类viewPagerAdapter扩展了FragmentPagerAdapter{
ArrayList arf;
公共viewPagerAdapter(碎片管理器fm){
超级(fm);
//TODO自动生成的构造函数存根
arf=新的ArrayList();
添加(新的DataViewer());
add(newaddviewer());
添加(新设置视图());
}
@凌驾
公共片段getItem(int arg0){
//TODO自动生成的方法存根
返回arf.get(arg0);
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回arf.size();
}
}
使用的InstanceItem(…)和destroyItem(…)方法跟踪片段的创建/销毁。或者,在构建过程中,您可以始终在片段上设置参数(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);
}
private SparseArray registeredFragments=new SparseArray();
@凌驾
公共对象实例化项(视图组容器,int位置){
Fragment Fragment=(Fragment)super.instanceItem(容器,位置);
//TODO检查它是否是您想要的类型,并设置标记
注册碎片。放置(位置,碎片);
返回片段;
}
@凌驾
公共项(视图组容器、int位置、对象){
超级项目(容器、位置、对象);
注册碎片。移除(位置);
}
谢谢。但我通过使用谷歌指南在片段之间进行通信,而不使用片段中的标记来修复它。总之,我了解了android中的sparsearray。“我想在初始化过程中给每个方法一个标记”你这是什么意思?在创建片段的那一刻,在viewpager构造函数中,我想为每个片段设置一个标记,以便以后访问它们。