findViewById的转换结果是多余的

时间:2017-10-27 14:56:48

标签: android casting textview

我是Android的新手,我正在使用各种视图进行一些练习。一个这样的例子是:

    TextView messageView = (TextView) findViewById(R.id.message);

我的问题是:构建TextView有什么好处?我的IDE告诉我,转换方法是多余的。是否有任何用例需要以这种方式进行投射?

1 个答案:

答案 0 :(得分:3)

在API级别26之前,方法findViewById返回了View类的引用。所以你需要施展它。

//old signature
public View findViewById(int id){
    //
}

但是从API级别26开始,它已经更新,它使用模板返回View的子类,以便您可以在不进行转换的情况下分配返回的引用。

//new signature
public <T extends View > T findViewById(int id){
    //
}

您引用的示例在构建项目时使用了较旧的API级别,因此您可以在那里看到转换。这是强制性的,但现在不是必需的。所以你得到了警告。