Иметь свой Frg2
класс также реализуют интерфейс:
public class Frg2 extends Fragment implements TriggerActivityFromFrg1 {
и реализовать метод
@Override
public void trigger() {
if (getView() != null) { // see comments below
// TODO logic here
}
}
Добавить поле для вашей деятельности, чтобы отслеживать целевой фрагмент :
private TriggerActivityFromFrg1 mTarget;
Добавить регистровых/UNREGISTER методы деятельности:
public synchronized void registerTriggerTarget(TriggerActivityFromFrg1 listener) {
mTarget = listener;
}
public synchronized void unregisterTriggerTarget(TriggerActivityFromFrg1 listener) {
if (mTarget == listener) {
mTarget = null;
}
}
Сделать метод запуска в вашей деятельности, как это:
public void trigger() {
if (mTarget != null) {
mTarget.trigger();
}
}
Override onAttach()
и onDetach()
в Frg2
зарегистрироваться/не зарегистрировано:
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
((MyActivity) activity).registerTriggerTarget(this);
}
@Override
public void onDetach() {
((MyActivity) getActivity()).unregisterTriggerTarget(this);
super.onDetach();
}
Поздравляем, вы только что создали свой собственный мини-автобус.
Есть причина, по которой вы должны добавить весь этот код, и это потому, что ViewPager
не будет создавать фрагменты, пока они им не понадобятся. Также он отделяет MyActivity
от Frg2
.
Другое дело, иметь в виду, если расширение FragmentPagerAdapter
является то, что фрагмент будет оставаться в памяти, даже если вид разрушен, поэтому убедитесь, что вы убедитесь, что этот фрагмент имеет действительный вид, т.е. if (getView() != null)
является ViewPager помещен в различной активности? –
viewPager в той же деятельности, я упомянул все компоненты в сценарии – Choletski
, вы можете опубликовать свои файлы макета. –