Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在多个活动中实现片段接口_Android - Fatal编程技术网

Android 在多个活动中实现片段接口

Android 在多个活动中实现片段接口,android,Android,好的,我有一个活动A,它有一个片段A,还有一个活动B,它有一个片段B。活动A是主屏幕(类似于登录屏幕)。现在在片段B中,我尝试做一些工作,当会话过期时,我发送一条消息,注销并返回主屏幕a 现在片段B有一个接口,用于与活动B进行其他不同功能的通信。我的活动A是否应该只为这个注销会话实现片段B的相同接口,还是有更好的方法 举例说明: public class fragmentB extends Fragment { public interface FragmentBProgressLi

好的,我有一个活动A,它有一个片段A,还有一个活动B,它有一个片段B。活动A是主屏幕(类似于登录屏幕)。现在在片段B中,我尝试做一些工作,当会话过期时,我发送一条消息,注销并返回主屏幕a

现在片段B有一个接口,用于与活动B进行其他不同功能的通信。我的活动A是否应该只为这个注销会话实现片段B的相同接口,还是有更好的方法

举例说明:

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()
)。