我需要复制文本到剪贴板,所以我使用了一个代码,我已经在MainActivity中使用:
val myClipboard: ClipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
val myClip: ClipData
问题是,这段代码在Activity上运行良好,但在Fragment上却不行(显然)。
在getSystemService
上:
类型推断失败:fun获取系统服务(p0:背景,p1:类):T?不能应用于(字符串)
在CLIPBOARD_SERVICE
上:
类型不匹配:推断类型为String,但应为Context
我试过getSystemService(context!!, CLIPBOARD_SERVICE)
但不起作用
4条答案
按热度按时间qoefvg9y1#
当类是一个片段时,您可以通过调用Java中的
getActivity()
或Kotlin中的activity
来获取其父Activity的引用。使用此方法,您可以将“活动”中的代码更改为
vddsk6oq2#
在Kotlin中对上下文使用强制展开(!!)不是一个好主意。在你的fragment类中你可以使用下面的代码,这对任何NPE都是安全的,而且非常干净。
快乐编码!
piok6c0g3#
在android x中
getSystemService()
的构造函数发生了变化。现在你必须像这样调用剪贴板(你可以使用activity!!
或context!!
)rggaifut4#
下面是Kotlin用户的一个有趣的扩展: