如何从一个活动中连接两个不同的片段

时间:2019-06-04 05:43:10

标签: android android-fragments

我有两种不同的布局,分别用于两个不同的片段,但是在一次活动中。我正在使用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 :(得分:0)

您应该在Fragment中使用onAttach()回调。

来自onAttachFragment() doc

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

这是将子片段附加到当前片段时提供的回调。

我认为您在活动中同时托管了这两个片段,因此使用onAttach()来访问与活动进行通信的界面。

答案 1 :(得分:0)

就像@Arka Prava Basu提到的那样,您只需要一个Interafce,并且在您的父级活动中执行以下操作即可

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

希望您能明白。