最近,我發現AndroidStudio提醒我刪除一些類強制轉換。我記得在過去,我們必須強制轉換findViewById的結果,但是現在沒有必要了。findViewById的結果仍然是View,所以我想知道為什么我們不需要強制轉換類?我找不到提到的任何文檔,有人可以找到任何文檔嗎?
3 回答
紅糖糍粑
TA貢獻1815條經驗 獲得超6個贊
從API 26開始,findViewById將推理用作其返回類型,因此您不再需要強制轉換。
舊定義:
View findViewById(int id)
新定義:
<T extends View> T findViewById(int id)
因此,如果您compileSdk的年滿26歲,則意味著您可以使用此:)
catspeake
TA貢獻1111條經驗 獲得超0個贊
根據這篇文章:
以下函數依賴于Java的泛型自動類型推斷,從而消除了手動轉換的需要:
protected <T extends View> T findViewById(@IdRes int id) {
return (T) getRootView().findViewById(id);
}
九州編程
TA貢獻1785條經驗 獲得超4個贊
如果您使用View類的常用屬性(例如可見性)或某些常用方法(例如onClick()),則Android Studio會提醒您刪除投射
例如:
((ImageView) findViewById(R.id.image_car)).setVisibility(View.VISIBLE);
在這種情況下,您可以簡單地編寫:
findViewById(R.id.image_car).setVisibility(View.VISIBLE);
- 3 回答
- 0 關注
- 714 瀏覽
添加回答
舉報
0/150
提交
取消
