我需要 MainActivity-object 作为 Fragment-object 中的上下文。
-
将 MainActivity 作为"this"传递给 Fragment 类的自定义构造函数仅在启动应用程序时有效。旋转时,它通过
super.onCreate(savedInstanceState);
调用标准的空参数构造函数 -
在片段中创建主活动的新实例也不起作用。例如:
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();