0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

setImageResourceでnullが出て頭を抱えたお話

Posted at

フラグメントに未来少年コナンのパタパタアニメみたいに、ランダムなポーズのアニメをTimer関数で入れ替える。
これでActivity入れ替えてもずーっとヘッダーでキャラが踊り続けるアニメができるはずだったが・・・
val handler =Handler()
val picAry = arrayOf(R.drawable.pic0,R.drawable.pic2~~)
var rndNum:Int =Math.random *10
timer(name = "patapataTimer", period = 1000) {
handler.post{
anime.setImageResource(picAry[rndNum])
}
}

だが、最初のActivityじゃ普通に動くのに、別のActivityに飛んだりするとすぐ落ちてしまう。

Runのメッセージをみると
java.lang.NullPointerException:
なんでーい、nullでるやんけー。もう少し読み進んでいくと
void android.widget.ImageView.setImageResource(int)
どうもactivityの切り替えタイミングとTimerのタイミングが悪いときイメージを拾い損ねてnullが出る模様。

で、思い出したのがこの人の投稿
https://qiita.com/TomiGie/items/0545e11e694eac7d88ec

var mp: MediaPlayer? = null

変数を宣言するときに一番後ろに"?"を入れ、null許容型にするというもの
Viewの後ろにも付けられるかな?と入れてみたら・・・

timer(name = "patapataTimer", period = 1000) {
handler.post{
anime?.setImageResource(picAry[picSuu])
}
}
YES。これで見事 落ちなくなりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?