我跟隨slidenerd上的視頻來創建使用片段的滑動選項卡。 我基本上實現了一個pagerAdapter:如何使用滑動選項卡和ViewPager設置片段ID?
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有點讓我困惑。
fragmentStatePagerAdapter可以在需要時關閉碎片,因此可能無法發送消息。 – Kuffs
@Kuffs感謝您的注意。你的意思是,也作爲Java對象,或只是作爲一個視圖? – buddy123
如果需要,它會關閉片段直到再次需要它,在這種情況下它會再次啓動它。如果你需要你的片段存在,直到你決定擺脫他們,你需要一個FragmentPagerAdapter。 – Kuffs