2017年12月10日 星期日

Android-Kotlin 監聽元件錯誤

近期用 Kotlin 開發 Android 時
會發現非常奇怪的錯誤會發生
通常是在匯入 interface 的時候
比如 View.OnClickListener...等
在此記下
以便於之後查閱

1 . 程式碼在此
package com.xxx.xxx.xxx.xxx

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.View
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity(), View.OnClickListener {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        linearLayout.setOnClickListener(this);

    }

    override fun onClick(view: View) {
        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
        when (view?.id) {
            R.id.linearLayout -> {
                println("found");
            }
            else -> println("item not found");
        }

    }

}


2 . 導致錯誤...
Process: com.xxx.xxx.xxx.xxx, PID: 8563
kotlin.NotImplementedError: An operation is not implemented: not implemented
    at com.xxx.xxx.xxx.xxx.MainActivity.onClick(MainActivity.kt:19)
    at android.view.View.performClick(View.java:5637)
    at android.view.View$PerformClick.run(View.java:22429)
    at android.os.Handler.handleCallback(Handler.java:751)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6119)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

解法:

去除預設的 TODO("not implemented")
結果程式終於能夠正常執行了

簡單的說法
提醒你要記得實作
但是在 Kotlin 下 TODO 是會起阻擋提醒作用的

參考資料 :
 [Kotlin]kotlin.NotImplementedError: An operation is not implemented: not implemented
NotImplementedError

沒有留言:

張貼留言