gpt4 book ai didi

android - 这是初始化接口(interface)的最佳方法。 ( Activity 框架)?

转载 作者:行者123 更新时间:2023-11-29 20:45:43 25 4
gpt4 key购买 nike

我是 Android 编程领域的新手,这是我的问题。

假设我有一个名为 A 的 Activity 和一个名为 F 的 fragment 。我知道 ActivityFragment 之间的交互应该通过一个 Interface 来完成。我曾经像这样在 FragmentonAttach() 中设置 Interface

@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mListener = (MyListenerInterface) activity;
}

现在我从here听说了静态工厂方法 .我的问题是:哪个是初始化的最佳方法。听众? onAttach() 方法还是通过静态工厂方法初始化监听器,像这样?

public static MyFragment newInstance(MyListenerInterface mListener) {
MyFragment f = new MyFragment();
this.mListener = mListener;
...........
return f;
}

我认为,最好通过静态工厂方法 初始化监听器,而不是从 Activity 中强制转换,这样我们可以避免空指针异常。

最佳答案

是的,你不需要通过工厂转换任何东西,但在我看来 onAttach 更好,因为你泄漏 Activity 上下文的可能性较小。假设您使用工厂创建了一个实例并且从不使用该 fragment ,它会泄漏 Activity 的上下文以及其中的所有内容。也不要忘记在 onDetach 中销毁接口(interface)。

您还可以拥有该 fragment 的多个实例,并且使用选项一,它们都将具有相同的监听器,这不好。

此外,您还应该制作一个您可以称之为 BaseActivity 的抽象 Activity ,所有其他 Activity 都从那里扩展并定义接口(interface)方法,这样您就可以避免总是转换为许多不同的类。如果您需要在应用的每个 Activity 中快速更改某些内容,这也会派上用场。

关于android - 这是初始化接口(interface)的最佳方法。 ( Activity 框架)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30411625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com