Android O casting to findViewById 不再需要了嗎?

2022-09-01 06:54:35

我最近更新了我的Android SDK并在Android Studio中构建了API 26的工具,我直接注意到Android Studio在我执行类似操作时将我的视图投射标记为“冗余”:

TextView itemName = (TextView) findViewById(R.id.menuItemName);

经过一番研究,我发现从SDK 26开始,使用Java 8功能返回相同的对象类型,但我想知道的是,删除所有强制转换是否完全安全。这会导致26之前的Android出现任何问题吗?任何关于这方面的更多信息都会有所帮助,因为我在互联网上没有找到太多。提前致谢。findViewById


答案 1

方法签名已更改,如您所注意到的那样,现在它看起来像:

public <T extends View> T findViewById(int id);

与旧的(SDK 26之前)相比:

public View findViewById(int id);

因此,只要您使用SDK 26(或更高版本)来编译项目,就可以安全地从代码中删除强制转换,因为您将使用不再需要它的new。findViewById()

所以低于26的minSdk不会导致问题吗?

不,既不重要,也不重要。重要的是哪个必须或更高。minSdktargetSdkcompileSdk26


答案 2

推荐