如果我在 Main Activity 中创建一个 API 实例,我是否可以在片段中使用它,这样我就不需要再次创建该实例?示例:
public class MainActivity extends AppCombatActivity {
CustomApi customApi;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
customApi = new CustomApi(this, key);
}
}
如何在 MainActivity 创建的片段中访问此 customApi 实例,而无需再次创建此 CustomApi 的实例?
最佳答案
片段可以访问其 Activity
, 所以你可以在你的 Fragement
中做这样的事情:
CustomApi customApi = ((MainActivity) getActivity()).customApi;
customApi.method1(...);
这有点蛮力,但却是完成这项工作的一种简单易行的方法。这假设您的 Fragment
仅由单个 Activity
使用.如果你的Fragment
被多个 Activity 使用,你可以定义一个 Interface
并让所有父 Activity 实现该接口(interface)并访问 customApi
那样。
更简洁、更受 Android 认可、更专业的方法是使用 ViewModel
. ViewModel
由 Activity
共享及其所有 Fragment
s,您可以在 ViewModel
中管理自定义 API 引用.有关如何使用 ViewModel
的一些示例Activity
之间进行沟通和 Fragment
,你可以看这里:
关于java - 如何在 Fragments 中使用来自 Main Activity 的 API 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72558070/