android - 接口回调错误..循环直到它崩溃 - KOTLIN
问题描述
我有两个接口...
interface Calculator { fun getResult(input: String?): Result? }
interface Result { val asString: String }
我能够初始化计算器界面,但是当我尝试回调时,我收到一条错误消息...for looping Stackoverflow error message..知道为什么吗?我怎么解决这个问题?我知道问题出在这一行
***覆盖 fun getResult(input:String?):Result=getResult(textInputEditText.text.toString()) ***-
但我不知道如何解决它,非常欢迎任何帮助!提前感谢您的时间和帮助!
class ComputeFragment @ContentView constructor() : Fragment(R.layout.fragment_task) {
private var taskBinding: FragmentTaskBinding? = null
private val calculator: Calculator? = null
override fun onAttach(context: Context) {
super.onAttach(context)
if (context is Calculator) {
calculator = context
} else {
throw RuntimeException(context.toString() + " must implement
Calculator interface")
}
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState:Bundle?): View {
val binding = FragmentTaskBinding.inflate(layoutInflater)
taskBinding = binding
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
taskBinding
?.buttonFirst
?.setOnClickListener {
NavHostFragment.findNavController(this@ComputeFragment).navigate(R.id.action_FirstFragment_to_SecondFragment)
}
taskBinding
?.buttonCompute
?.setOnClickListener { v: View ->
if (calculator == null) {
Snackbar.make(v, R.string.please_implement, Snackbar.LENGTH_LONG).show()
return@setOnClickListener
}else {
val result = calculator.getResult(taskBinding?.textInputEditText?.text.toString())
taskBinding?.result?.text = result?.asString
}}}}
class TaskActivity : appCompatActivity() , Calculator {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_task)
setSupportActionBar(toolbar}
}
override fun getResult(input: String?): Result? =
getResult(textInputEditText.text.toString())
}}```
解决方案
推荐阅读
- linux - 是否有系统调用或某种方式可以知道 Linux 中文件描述符的类型(例如常规文件 fd、套接字 fd、信号 fd、计时器 fd)?
- c# - 如何在不使用外部库的情况下编写 CSV 文件
- python - pandas 中的数据清理:如果这些字符串包含在另一列中,则用特定字符串替换空值
- javascript - 使用 JavaScript 将图像复制到剪贴板
- string - 如何在 TeamCity 构建步骤中批量使用替换变量循环?
- java - 如何制作一个 Restful API 来处理 Spring Boot 中的多对多关系?
- sql - 如何将行转换为谷歌 BigQuery 中的列?
- java - JdbcBatchItemWriter 多线程
- reactjs - 模块解析失败:意外字符“@”(1:0)
- vue.js - Vue.js 道具未定义