如何解决剪贴板中的 null
我需要从剪贴板中获取复制的数据。我使用此代码:
val clipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
val clipData: ClipData? = clipboardManager.primaryClip
clipData?.let { textView.text = clipData.getItemAt(0).text }
如果我在 onCreate()
或 onResume()
回调中使用此代码,我总是从剪贴板中获取空值。
但是如果我调用这个代码:
textView.post {
val clipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
val clipData: ClipData? = clipboardManager.primaryClip
clipData?.let { textView.text = clipData.getItemAt(0).text }
}
我得到了复制的字符串。
所以,我得出的结论是,剪贴板会等到所有视图都呈现出来。
为什么剪贴板需要等待渲染所有视图?或者剪贴板正在等待其他东西
解决方法
发生这种情况是因为当您尝试从剪贴板获取 primaryClip
时,您的应用应该处于焦点。
必须设置所有视图并绑定到 Activity,这就是为什么您必须借助 view.post { }
API 29 中添加了该更改?? https://developer.android.com/about/versions/10/privacy/changes#clipboard-data
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。