首页 > 解决方案 > 接口回调错误..循环直到它崩溃 - 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())
   }}```

标签: androidkotlinmobileinterfacefragment

解决方案


推荐阅读