【发布时间】:2021-02-16 23:30:00
【问题描述】:
关于粘贴主题的Android官方文档说:
使用 getSystemService(CLIPBOARD_SERVICE) 获取全局 ClipboardManager 对象。还要声明一个全局变量来包含粘贴的文本:
var clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
var pasteData: String = ""
当我对片段执行完全相同的操作时,它会告诉我创建 getSystemService 函数。这是我所做的:
我的导入(我在 Android Studio 告诉我的所有内容上都单击了导入):
import android.content.ClipboardManager
import android.content.Context
import android.content.Context.CLIPBOARD_SERVICE
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import androidx.core.content.ContextCompat.getSystemService
import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController
import com.google.android.material.textfield.TextInputEditText
我的代码:
class FirstFragment : Fragment() {
var clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
var pasteData: String = ""
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.pgn_page, container, false)
}
private fun pasteText():String {
val abc = clipboard?.primaryClip
val item = (abc?.getItemAt(0))
return item?.text.toString()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//val pgnBar: TextInputEditText = view.findViewById(R.id.pgncode)
val pgnBar: TextInputEditText = view.findViewById(R.id.pgncode)
val clipButton: Button = view.findViewById(R.id.clipboardButton)
pgnBar.setText(PGNCode.value)
clipButton.setOnClickListener{
pgnBar.setText(pasteText())
}
view.findViewById<Button>(R.id.startAnalysisButton).setOnClickListener {
PGNCode.value = pgnBar.getText().toString()
findNavController().navigate(R.id.action_FirstFragment_to_SecondFragment)
}
}
}
我应该改变什么?
【问题讨论】: