私はAndroidが新しく、さまざまなビューを使用するための演習を行っています。そのような例の1つは、findViewByIdのキャスティング結果は冗長です
TextView messageView = (TextView) findViewById(R.id.message);
私の質問は次のとおりです。TextViewをキャストするメリットは?私のIDEは、メソッドのキャストは冗長であると私に伝えます。このようにキャストしたいユースケースはありますか?
私はAndroidが新しく、さまざまなビューを使用するための演習を行っています。そのような例の1つは、findViewByIdのキャスティング結果は冗長です
TextView messageView = (TextView) findViewById(R.id.message);
私の質問は次のとおりです。TextViewをキャストするメリットは?私のIDEは、メソッドのキャストは冗長であると私に伝えます。このようにキャストしたいユースケースはありますか?
APIレベル26以前では、メソッドfindViewById
は、View
クラスのリファレンスを返しました。だからあなたはそれをキャストする必要があった。
//old signature
public View findViewById(int id){
//
}
しかし、APIレベル26から始めて、それが更新され、あなたがキャストせずに返された参照を割り当てることができるように、テンプレートを使用してView
のサブクラスを返します。
この例では、プロジェクトをビルドする際に古いAPIレベルが使用されているため、そこでキャスティングが表示されます。以前は強制的だったが、今は必要ではない。あなたは警告を受けています。
ビルドツールのバージョンには拘束されていませんが、26の 'compileSdkVersion' – ianhanniballake
android-studio versionはあなたが使用しています –
findViewByIdはViewを返し、このクラスはすでにsetOnClickListenerメソッドを定義しているからです。これは、キャストを実行しなくても、リスナを設定できることを意味します。あなたのキャストは冗長です。 –