无需投下findViewById的结果?
最近我发现AndroidStudio提醒我删除一些类的投射。 我记得在旧时代,我们必须投下findViewById的结果,但现在没有必要。
findViewById的结果仍然是View,所以我想知道为什么我们不需要施放这个类?
我找不到任何提到的文件,谁能find任何文件?
从API 26开始, findViewById
为其返回types使用推理,所以不再需要投射。
旧的定义:
View findViewById(int id)
新定义:
<T extends View> T findViewById(int id)
所以如果你的compileSdk
至less是26,这意味着你可以利用这个:)
如果您使用View类中的常见属性(如可见性或一些常见方法,如onClick()) ,Android Studio会提醒您删除投射。
例如:
((ImageView) findViewById(R.id.image_car)).setVisibility(View.VISIBLE);
在这种情况下,你可以简单地写:
findViewById(R.id.image_car).setVisibility(View.VISIBLE);
在旧版本中:
AutoCompleteTextView name=(AutoCompleteTextView) findViewById(R.id.autoCompleteTextView);
在3.0与sdk 26:
AutoCompleteTextView name = findViewById(R.id.autoCompleteTextView);