Я следил за видео на slidenerd, чтобы создать салфетки с помощью фрагментов. я в основном реализован pagerAdapter:Как установить идентификатор фрагмента при использовании вкладок салфетки и ViewPager?
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, чтобы доставить сообщение Ъ:
public void Send(int from, int to, Object object) {
FragmentManager fm = getSupportFragmentManager();
Communicator comm = (Communicator) fm.findFragmentById(...);
if (comm != null)
comm.Receive(from, object);
}
Это именно там, где Im застрял. Мне нужно получить указатель на мой фрагмент, но не знаю, как дать ему идентификатор. ViewPager меня немного сбивает с толку.
ФрагментStatePagerAdapter может отключать фрагменты, когда это необходимо, и поэтому недоступно для отправки сообщений. – Kuffs
@ Kuffs благодарит за замедление. Вы имеете в виду также объект java или просто как представление? – buddy123
Если нужно, он отключит фрагмент, пока он не понадобится снова, и в этом случае он снова запустит его. Если вам нужны ваши фрагменты, чтобы существовать до тех пор, пока вы не решите избавиться от них, вам понадобится FragmentPagerAdapter. – Kuffs