Android-如何将片段对象作为活动对象传递

Android-如何将片段对象作为活动对象传递,android,kotlin,Android,Kotlin,我有一个接受活动作为对象的方法。该方法还基于特定的业务逻辑使用该活动对象启动新的活动。 但是我需要从片段内部使用这个方法 如何将片段对象转换为活动对象。也许这是值得一写的答案/解释 你在问: 如何将片段对象转换为活动对象 您无法真正转换这些,但您可以通过调用以下命令来获取片段所附加到的活动: requireActivity() 其内部功能: @NonNull public final FragmentActivity requireActivity() { FragmentActivi

我有一个接受活动作为对象的方法。该方法还基于特定的业务逻辑使用该活动对象启动新的活动。 但是我需要从片段内部使用这个方法


如何将片段对象转换为活动对象。

也许这是值得一写的答案/解释

你在问:

如何将片段对象转换为活动对象

您无法真正转换这些,但您可以通过调用以下命令来获取片段所附加到的活动:

requireActivity()
其内部功能:

@NonNull
public final FragmentActivity requireActivity() {
    FragmentActivity activity = getActivity();
    if (activity == null) {
        throw new IllegalStateException("Fragment " + this + " not attached to an activity.");
    }
    return activity;
}
您还说您正在考虑使用:

activity as Activity
这里的活动实际上是一个getter,所以它调用getActivity,getActivity可以为null,而您可以强制转换它,我想,这样做更安全:

activity?.let{ instance ->
//use instance
}
如果您有一个片段的实例可用,那么假设:

val foo : Fragment

您仍然可以只使用foo.requirection或foo.activity

而不是将片段投射到活动中,这被认为是不好的做法您可以创建一个Util对象并在其中公开您的方法,这样,它就可以从任何需要的地方调用。我想不出你为什么要围绕着这个函数传递一个活动。这个函数在不同的模块中,并且在一个非UI类中,它们只接受活动对象。我现在需要从我的片段中调用这个函数,你使用的是什么语言?Kotlin。我想知道把活动当作活动来使用是否有效。我知道这不是一个好的做法,那么还有其他选择吗?