3
私はファブを回転させてアイコンを変更しようとしていましたが、何らかの理由でRunnable
がまったく機能しません。Android上のフローティングアクションバーで実行可能なRunnable
private val handler: Handler = Handler()
private var isRotate: Boolean = false
private val rotate: Animation = RotateAnimation(0.toFloat(),90.toFloat(),0.toFloat(),0.toFloat())
private val r: Runnable = Runnable {
fun run() {
if (isRotate) {
fab2.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.ic_menu_camera, null))
isRotate = false
} else {
fab2.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.ic_menu_gallery, null))
isRotate = true
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
...
rotate.duration = 1000
rotate.repeatCount = 0
rotate.repeatMode = Animation.REVERSE
rotate.fillAfter = true
fab2?.setOnClickListener { view ->
ObjectAnimator.ofFloat(view,"rotation",0.toFloat(),90.toFloat()).setDuration(800).start()
view.handler.postDelayed(r,400)
}
}
ボタンの回転が、アイコンOnClickListener
が動作しているが、Runnable
ではないことを意味は変更されません。ここで
は、コードがあります。
どうすればいいですか?
'fab2 !!。onClickListener'を使うか、' fab2'をnullにできないようにしてください。 safe-call演算子 '?'は、左側の式が 'null'の場合にリスナーを登録するのを無視します。あなたの 'fab2'がおそらく'ヌル 'であることを意味します。 –
ちょうど私が編集したように、問題はfab2がnullではなく、roate関数は正常に動作しますが、ハンドラは正しくありません。 –