Eri*_*hao 144 android casting findviewbyid
最近我发现AndroidStudio提醒我删除一些类转换.我记得在过去,我们必须抛出findViewById的结果,但现在没有必要.
findViewById的结果仍然是View,所以我想知道为什么我们不需要转换类?
我找不到任何提到的文件,任何人都可以找到任何文件吗?
Edu*_* B. 225
从API 26开始,findViewById使用其返回类型的推断,因此您不再需要强制转换.
旧定义:
View findViewById(int id)
Run Code Online (Sandbox Code Playgroud)
新定义:
<T extends View> T findViewById(int id)
Run Code Online (Sandbox Code Playgroud)
所以如果你的compileSdk年龄至少是26岁,那就意味着你可以利用这个:)
zer*_*der 13
根据这篇文章:
以下函数依赖于Java的泛型自动类型推断,以消除手动转换的需要:
protected <T extends View> T findViewById(@IdRes int id) {
return (T) getRootView().findViewById(id);
}
Run Code Online (Sandbox Code Playgroud)
小智 11
在旧版本中:
AutoCompleteTextView name = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView);
Run Code Online (Sandbox Code Playgroud)
来自带有SDK 26的Android Studio 3.0:
AutoCompleteTextView name = findViewById(R.id.autoCompleteTextView);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40878 次 |
| 最近记录: |