如何在使用滑动标签和ViewPager时设置片段ID?

时间:2013-12-20 09:16:09

标签: android android-fragments android-viewpager

我按照幻灯片中的视频使用片段创建滑动标签。 我基本上实现了一个pagerAdapter:

class pagerAdapter extends FragmentStatePagerAdapter
{

    public pagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int arg0) {
        Fragment fragment = null;
        if (arg0 == 0)
            fragment = new fragmentA();
        if (arg0 == 1)
            fragment = new fragmentB();
        if (arg0 == 2)
            fragment = new fragmentC();
        if (arg0 == 3)
            fragment = new fragmentD();
        return fragment;
    }

    @Override
    public int getCount() {
        return 4;
    }

}

到目前为止,这项工作非常有效。 现在我希望能够通过活动将信息从一个片段发送到另一个片段。 我所做的是创建一个活动和片段实现的通信器接口。

public interface Communicator {
    public void Send(int from, int to, Object object);
    public void Receive(int id, Object object);
}

如果fragmentA希望向fragmentB发送消息,我只使用Send(a's id, b's id, someData) 活动处理消息并使用fragmentManager将消息传递给b:

public void Send(int from, int to, Object object) {
    FragmentManager fm = getSupportFragmentManager();
    Communicator comm = (Communicator) fm.findFragmentById(...);
    if (comm != null)
        comm.Receive(from, object);
}

这正是我陷入困境的地方。我需要得到一个指向我的片段的指针,但不知道如何给它一个id .. viewPager有点让我困惑。

1 个答案:

答案 0 :(得分:2)

你可以从适配器it-self获取片段的引用:

public void Send(int from, int to, Object object) {

    Communicator comm = pagerAdapter.getItem(to);
    if (comm != null)
        comm.Receive(from, object);
}

此处的to和from应该是适配器内部片段的索引。