Android 在多个活动中实现片段接口
好的,我有一个活动A,它有一个片段A,还有一个活动B,它有一个片段B。活动A是主屏幕(类似于登录屏幕)。现在在片段B中,我尝试做一些工作,当会话过期时,我发送一条消息,注销并返回主屏幕a 现在片段B有一个接口,用于与活动B进行其他不同功能的通信。我的活动A是否应该只为这个注销会话实现片段B的相同接口,还是有更好的方法 举例说明:Android 在多个活动中实现片段接口,android,Android,好的,我有一个活动A,它有一个片段A,还有一个活动B,它有一个片段B。活动A是主屏幕(类似于登录屏幕)。现在在片段B中,我尝试做一些工作,当会话过期时,我发送一条消息,注销并返回主屏幕a 现在片段B有一个接口,用于与活动B进行其他不同功能的通信。我的活动A是否应该只为这个注销会话实现片段B的相同接口,还是有更好的方法 举例说明: public class fragmentB extends Fragment { public interface FragmentBProgressLi
public class fragmentB extends Fragment {
public interface FragmentBProgressListener {
public void onShowDataDialog();
public void onRemoveData();
public void onSessionError(String errordata);
}
//or should i have another interface that implements this only in activity A
}
活动B:
public class ActivityB extends Activity implements FragmentBProgressListener {
public void onShowDataDialog(){
}
public void onRemoveData(){
}
public void onSessionError(String errordata){
// finish Activity here
}
}
活动A:
public class ActivityA extends Activity implements FragmentAListener, FragmentBFragmentBProgressListener {
public void onFragA(){
}
public void onShowDataDialog(){
}
public void onRemoveData(){
}
public void onSessionError(String errordata){
// show error dialog here from fragment B
}
}
这是个好办法吗?有什么我应该注意的陷阱吗
我的活动A是否应该只为这个注销会话实现片段B的相同接口,还是有更好的方法
您可以将
onSessionError()
方法拆分为另一个接口。我正考虑这样做,但我不知道如何将多个侦听器添加到onAttach()中的活动中。@sparrow:我不知道您在说什么。当片段希望在其宿主活动上调用方法时,它调用getActivity()
,将结果强制转换到适当的接口,然后在该接口上调用方法。我的意思是,如果我按照您在回答中建议的做,我必须在活动A中实现另一个接口,那么我如何在片段B的onAttach()中附加这个接口,或者我不必这样做?@sparrow:对不起,我仍然不知道你在说什么onAttach()
与接口无关。无论活动是否实现任何接口、一个接口、两个接口、三个接口或1000万个接口,该片段都将附加到活动。当您希望在相关接口上调用方法时,请调用getActivity()
,并在需要该接口的位置将其转换为感兴趣的接口(该接口可能会晚于onAttach()
)。