Android:将 MainActivity 的实例传递给 Fragment



我需要 MainActivity-object 作为 Fragment-object 中的上下文。

  1. 将 MainActivity 作为"this"传递给 Fragment 类的自定义构造函数仅在启动应用程序时有效。旋转时,它通过super.onCreate(savedInstanceState);调用标准的空参数构造函数

  2. 在片段中创建主活动的新实例也不起作用。例如:

    MainActivity ma = new MainActivity(); AdapterTasks at = new AdapterTasks(ma,title, subt, imgid);

-->系统服务不适用于onCreate((

如何获取从主活动对象到片段对象的引用?

如果使用Java,你可以简单地调用getActivity()

如果您使用的是 Kotlin,您还可以使用requireActivity()它返回一个非空,而getActivity()返回可为空,从而导致您的代码中有很多空检查。

在一个Fragment内,只需调用this.getContext()即可。

或者当您需要访问MainActivity中的某些内容时:

MainActivity activity = (MainActivity) this.getActivity();

两者都仅在Fragment连接到Activity时起作用。通常,this.getContext()可以防止人们在Activity中添加太多代码,而应该将其添加到Fragment中。一个人可以在Fragment中做任何事情,同时让Activity膨胀它。

你不需要传递 MainActivity。

在您的片段上,使用以下命令:

activity = (MainActivity) getActivity();

最新更新