我按照幻灯片中的视频使用片段创建滑动标签。 我基本上实现了一个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有点让我困惑。
答案 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应该是适配器内部片段的索引。