我可以使用哪种上下文来初始化Kotlin Android中的ClusterManager?

var clusterManager: ClusterManager<MarkerCluster>? = null
clusterManager = ClusterManager(context, map);

最佳答案



它取决于您在哪里使用clusterManager = ClusterManager(context, map);
例如,如果您在任何 Activity 中使用它,例如

clusterManager = ClusterManager(this, map);
// or
clusterManager = ClusterManager(this@LoginActivity, map);

例如,如果您在任何片段中使用它,例如这样
class FragmentOne : Fragment() {

    var mContext: Context? = null

    override fun onAttach(context: Context) {
        super.onAttach(context)
        mContext = context

    }

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val rootView = inflater.inflate(R.layout.fragment_one, container, false)
        clusterManager = ClusterManager(mContext, map)
        return rootView
    }

}

注意

您可以使用getActivity()getContext()在片段中获取context
但是getActivity()可以返回null,所以我建议您应该使用onAttach()在片段中获取context

10-06 05:09