2017-09-12 265 views
3

我試圖擺脫一個警告,Android Studio希望我的onTouchListener覆蓋performClick,但我仍然警告。Android的kotlin onTouchListener要我重寫performClick()

draggableBar!!.setOnTouchListener(View.OnTouchListener { view, motionEvent -> 
    when (motionEvent.getAction()) { 
     MotionEvent.ACTION_DOWN -> { 

     } 
     MotionEvent.ACTION_UP -> { 
      view.performClick() 
     } 
    } 

    [email protected] true 
}) 

這可能是一個Android Studio bug或我做錯了什麼?

+0

也許IDE的困惑是因爲它不知道傳入的視圖是你的'draggableBar'實例..你試過做'draggableBar !!。performClick()'而不是? – Boris

+0

您能否給您的實施多一點背景?並請添加Android Studio打印的錯誤。 – tynn

回答

0

好吧,我有同樣的問題,但我通過覆蓋onTouch偵聽器來解決它。

默認的onTouch希望我們重寫performClick(),但即使通過view.performClick()調用該方法,這也不起作用。因此,因此

覆蓋您onTouch這樣的:

override fun onTouch(view: View, motionEvent: MotionEvent): Boolean { 
    when (view) { 
     draggableBar -> { 
      when (motionEvent.getAction()) { 
       MotionEvent.ACTION_DOWN -> { 

       } 
       MotionEvent.ACTION_UP -> { 
        view.performClick() 
       } 
      } 
     } 
     otherButtonHere -> { 
      //your welcome 
     } 
    } 

    return true 
} 

並以這種方式,你可以在你的所有可點擊美景使用單onTouch()。

不要忘記實現你的類:

View.OnTouchListener 

,並設置監聽器:

draggableBar!!.setOnTouchListener(this) 

希望它能幫助! :)