何気ない、Androidではよく書くこんな記述。
_checkbutton = (CheckBox) findViewById(R.id.checkbutton);
_checkbutton.setChecked(true);
自分の場合は、CheckBoxだけじゃなくLinerLayoutのVisibleを変更させるだけのためにキャストなど
動いていたものが突然ClassCastExceptionを吐いて動かなくパターンなのですが
しかもonCreate()で・・
こういうパターンでClassCastExceptionを吐くなら
LinearLayout mLinearLayout_main = (LinearLayout) findViewById(R.id.linearLayout_main);
mLinearLayout_main.setVisibility(View.VISIBLE);
Castしなきゃいんだろ!と怒りながら
findViewById(R.id.linearLayout_main).setVisibility(View.VISIBLE);
と書き換えますが、
CheckBoxのsetCheckedとかはCastしてからじゃないと扱えない・・
ちまちまLayoutをいじってると治ったり、
1dpなLinerLayoutを挿入して騙し騙し動かしてたのですが、
それでもまた動かなくなることが有って散々悩んでいた・・・
ふとおもって対応したのが以下のようなコード
findViewById(R.id.checkbutton).post(new Runnable() {
@Override
public void run() {
_checkbutton = (CheckBox) findViewById(R.id.checkbutton);
_checkbutton.setChecked(true);
}
});
俗に言うUIスレッド云々かもですね
今のところこういう書き方にした所ClassCastExceptionは吐かなくなってます
悩んでる方お試しを・・
つーか、キャスト連発させるのって何なんでしょうね?