Как связать два разных фрагмента из одного упражнения - PullRequest
0 голосов
/ 04 июня 2019

У меня есть два разных макета, для двух разных фрагментов, но в одном действии. Я использую обратный вызов onAttachFragment, но я не могу использовать оба интерфейса одновременно.

public interface AvInterface{
    public void onMessageRead(String data);
}

public interface WeInterface{
    public void onMessageRead(String data);
}

somefunction(){

avInterface.onMessageRead("14221322345124");
weInterface.onMessageRead("142620405958");

}

public void onAttachFragment(Fragment fragment) {
    super.onAttachFragment(fragment);

    try {
        avaInterface = (AvInterface) fragment;
        weInterface = (WeInterface) fragment;
    }
    catch (ClassCastException e) {
        //throw new ClassCastException(fragment.toString()+" must override AvInterface");
    }
}

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

Как упомянуто @Arka Prava Basu, вам нужен только один Interafce, и вы делаете что-то вроде следующего в родительском упражнении

if(fragment InstanceOf fragmentA){
    dosomething();
}else{
    dosomethingelse()
}

Надеюсь, вы поняли идею.

0 голосов
/ 04 июня 2019

Вы должны использовать обратный вызов onAttach() во Фрагменте.

From onAttachFragment() doc :

Called when a fragment is attached as a child of this fragment.

Это обратный вызов, предоставляемый при прикреплении дочернего фрагмента, прикрепленного к текущему фрагменту.

Я думаю, что вы размещаете оба фрагмента в действии и, следовательно, используете onAttach(), чтобы получить доступ к интерфейсу для взаимодействия с действием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...