为什么活动和片段之间进行通信需要onAttach()?

时间:2018-09-19 17:52:13

标签: java android android-fragments

为什么onAttach()方法对于活动和片段之间的通信是必需的 例如以下代码:-

public class SimpleFragment extends Fragment {

Fragmentinterface interf;

public void onAttach(Context context) {
    super.onAttach(context);
    if (context instanceof Fragmentinterface) {
        interf = (Fragmentinterface) context;
    } else {
        throw new ClassCastException("exception message");
    }
}

为什么interf = (Fragmentinterface) context;必须将活动强制转换为界面刷新? 为什么Mainactivity实现接口并用方法主体调用接口方法并不那么简单,为什么还要在具有接口引用的fragment中调用该方法以在activity和fragment之间进行通信呢?

作为一个新手,我可能缺乏一些Java的核心知识...请解释

1 个答案:

答案 0 :(得分:1)

  

为什么interf =(Fragmentinterface)上下文;将活动投向   界面刷新是必要的吗?

因为我们只想访问特定接口的方法,而不是MainActivity的所有方法

  

为什么Mainactivity实现接口并没有那么简单   用方法主体调用接口方法

interfnull,首先我们需要对其进行初始化,在这里我们想将数据传递给活动,尽管其他活动方法也可以进一步使用数据,尽管您可以使用lambda,匿名类作为参数,但应在活动范围内完成,范围定义边界,一种通信方式是公共方法。

注意:尽管可以立即使用上下文,但是可以在以后的其他生命周期方法中进行强制转换,尽管onAttach是第一个使用context的地方。