gpt4 book ai didi

java - 紧密耦合的 fragment 在 Android 中可以吗(在某些情况下)?

转载 作者:太空宇宙 更新时间:2023-11-03 13:46:49 25 4
gpt4 key购买 nike

当实现 Fragment 到 Activity 的通信时,通常的例子是:

MyActivity extends Activity implements MyInterface {
...
@Override
public void myMethod() {
// Do something....
}
...
}

MyFragment extends Fragment {
...
private void aMethod() {
((MyInterface) getActivity()).myMethod();
}
...
}

事实是,在我的项目中,Fragments 通常仅用于以“divide et impera”的方式分解不同模块中的现有 Activity (可能在 Activity 变得过于复杂时进行重构)。将这些 fragment 之一附加到另一个 Activity (不同于从中提取 fragment 的 Activity )根本没有任何意义。

所以在我的案例中,我通常会得到:

MyActivity extends Activity {
...
void myMethod() {
// Do something....
}
...
}

MyFragment extends Fragment {
...
private void aMethod() {
((MyActivity) getActivity()).myMethod();
}
...
}

所以可怕的问题是:如果 Fragment 总是只在该 Activity 中使用,为什么我们必须使用接口(interface)?这是不好的做法吗?在这些情况下使用接口(interface)有哪些优势?

最佳答案

我认为这不是一个坏习惯。当您使用界面时,您试图解决什么问题?您尝试预见将 fragment 用于其他 Activity 的情况。如果这没有发生,那么您的界面只会增加复杂性而没有任何好处。

另一个好处可能是定义 fragment 可以调用 Activity 的哪些方法,因此您的界面定义明确。然而,这样做的好处值得商榷。

此外,我通常将 Activity 和 fragment 按功能分组在一个包中。因此,如果我正在编写此代码,我会将 myMethod 包私有(private)化,这显然不能通过接口(interface)来完成。因此,在某种程度上,它甚至可以改进封装。

关于java - 紧密耦合的 fragment 在 Android 中可以吗(在某些情况下)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40742469/

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