我有两种不同的布局,分别用于两个不同的片段,但是在一次活动中。我正在使用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");
}
}
答案 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()
}
希望您能明白。