AndroidでfindViewByIdを使うにはタイプ変換が必要ですか?

1111 ワード

接触コントロールから、Android開発者が最もよく知っている行のコードは、Button button = (Button) findViewById(R.id.button);私が初めてこの行のコードを書いたとき、Javaを習ったばかりで、まだ何日も経っていないので、どういう意味なのか分からないが、本について叩くだけで、かっこで強制タイプ変換だと知った.しかしある日、ふと自分のコードを見て、灰色の波線を打ってヒントを与えた.
Casting 'findViewById(R.id.button)' to 'Button' is redundant less... (Ctrl+F1) This inspection reports unnecessary cast expressions.
つまり、このようなタイプ変換は必要ありません.タイプ変換は必要ない以上、findView ById()メソッドで返されるViewはすでに必要なタイプです.Ctrl+クリックすると、次のように見えます.
@SuppressWarnings("TypeParameterUnusedInFormals")
    @Override
    public  T findViewById(@IdRes int id) {
        return getDelegate().findViewById(id);
    }

戻るオブジェクトはすでに具体的で、Viewから継承されたオブジェクト、例えばButtonは、直接Viewに戻るのではなく、Viewから継承されていますが、学習を始めたばかりの頃、多くのチュートリアルでは、このようなカッコを付けてタイプ変換する書き方がありましたが、実はAPIバージョンの理由です.API 26からfindViewById()メソッドはすでに上記のように、必要なタイプを自動的に返してAPI 25のソースコードを調べるので、簡単に見ることができます.
@Override
    public View findViewById(@IdRes int id) {
        return getDelegate().findViewById(id);
    }

ソースを調べるサイトもおすすめ:Android OS