2017-09-12 42 views
3

Androidスタジオで私の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スタジオのバグですか、何か間違っていますか?

+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) 

は、IT支援を期待します! :)

関連する問題