如果我在主活动中创建一个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实例?

推荐答案

Fragment可以访问其Activity,因此您可以在Fragement中执行类似操作:

CustomApi customApi = ((MainActivity) getActivity()).customApi;
customApi.method1(...);

这有点 brute ,但却是一种简单易行的方法.这假设您的Fragment只被一个Activity使用.如果您的Fragment被多个活动使用,您可以定义Interface,让所有父活动实现该接口并以这种方式访问customApi.

一种更干净、更受Android认可、更专业的方法是使用ViewModel.ViewModelActivity及其所有Fragment共享,您可以在ViewModel中管理自定义API引用.有关如何使用ViewModelActivityFragment之间通信的一些示例,您可以查看以下内容:

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

Java相关问答推荐

为什么接口中的主函数而不是类中的主函数在Java 17中编译和运行没有问题?

无法找到符号错误—Java—封装

在现代操作系统/硬件上按块访问数据值得吗?

根据对象和值的参数将映射<;T、值&>转换为列表<;T&>

SpringBootreact 式Web应用程序的Spring Cloud Configer服务器中的资源控制器损坏

Exe4j创建的应用程序无法再固定在任务栏Windows 11上

编译多个.Java文件并运行一个依赖于用户参数的文件

SpringBoot+Java 17@Valid未验证POJO

Mapstruct不能正确/完全映射属性

JDK 21-为什么线程局部随机S nextInt不直接用Super.nextInt实现?

Log4j与jdk21兼容吗?

Kotlin Val是否提供了与Java最终版相同的可见性保证?

使用htmlunit和java单击按钮

基于配置switch 的@Controller的条件摄取

Domino中不同的java.Protocol.handler.pkgs设置在XPages Java中导致错误

为什么创建Java动态代理需要接口参数

在单例类上获取Java锁,了解原因

spring 更新多项管理关系

设置背景时缺少Android编辑文本下划线

try 添加;按流派搜索;在Web应用程序上,但没有;I don’我不知道;It’这个代码错了