如何在视图寻呼机适配器中初始化它们时为我的片段添加标签

时间:2015-03-17 19:19:15

标签: android android-fragments android-viewpager

这是我的代码; 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();
    }
}

1 个答案:

答案 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);
    }