java - 如何在 Fragments 中使用来自 Main Activity 的 API 实例?

标签 java api android-fragments android-activity

如果我在 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 . ViewModelActivity 共享及其所有 Fragment s,您可以在 ViewModel 中管理自定义 API 引用.有关如何使用 ViewModel 的一些示例Activity之间进行沟通和 Fragment ,你可以看这里:

https://developer.android.com/guide/fragments/communicate

关于java - 如何在 Fragments 中使用来自 Main Activity 的 API 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72558070/

相关文章:

java - Android - 如何从子 SurfaceView 访问 fragment 中的方法?

java - 保存 arrayList 而不是覆盖抽屉导航中的每个项目单击?

java - 如何验证 CSV 文件的第一行是否与标题名称匹配?

Java - 找不到符号类并发

python - python是facebook开发的稳定平台吗?

java - Spring Boot API 错误地重复 SQL 数据

java - 重新打开应用程序时获取 AsyncTask 状态

java - 数据没有推送到浏览器?

Java:关于字符串的初学者问题

php - session ID 与 token