Help us understand the problem. What is going on with this article?

Layoutをいじっただけor今まで動いてたのにClassCastExceptionが出て困っている方々へ

More than 1 year has passed since last update.

何気ない、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は吐かなくなってます
悩んでる方お試しを・・

つーか、キャスト連発させるのって何なんでしょうね?

imaiworks
PHP好き好き大好き!やっぱ好き!
ayudante
いつもユーザー中心で技術者とコンサルタントがとことん考え抜く それがアユダンテです
https://ayudante.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした