作者:上帝的爱神_413_645 | 来源:互联网 | 2023-02-01 16:55
自从我更新到Android Studio 3.0后,拒绝构建发布APK并抛出lint WrongViewCast
错误.在2.x和以前的版本中没有.
问题是在违规代码中将结果findViewById
作为参数传递给构造函数期望View
实例.由于所有视图都来自View
类并且findViewById
本身返回,View
因此这是相当意外的情况.
产生lint WrongViewCast
错误的代码是相当基本的:
activity_main.xml中
ViewWrapper.java
import android.view.View;
public class ViewWrapper
{
private View contentView;
public ViewWrapper(View content)
{
cOntentView= content;
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// this line shows WrongViewCast error
ViewWrapper v = new ViewWrapper(findViewById(R.id.text));
}
}
用以下代码替换上面有问题的代码行不会引发错误
View tv = findViewById(R.id.text);
ViewWrapper v = new ViewWrapper(tv);
当然,使用@SuppressLint("WrongViewCast")
注释或使用gradle来抑制lint错误
lintOptions {
disable 'WrongViewCast'
}
也行得很好.
问题是为什么ViewWrapper v = new ViewWrapper(findViewById(R.id.text));
显示错误?是lint中的那个bug还是我遗漏了一些明显的东西?