升级Android Studio Dolphin版本有一段时间,一直以为是XML布局无法预览是一个bug,随装了几个老版本来回切换使用,等后续会升级修复,结果到写文章时也还没修复,期间也尝试修改自己的代码解决,尝试了一些,还去Google上检索,有用的文章比较少,那就只能自己定位问题,看看如何解决。
首先可以发现的是,只要是自定义的view都有几率无法预览,所以参照这个思路解决。
The following classes could not be instantiated
layoutlib_._internal_.kotlin.KotlinNullPointerException
at xxx.AppCompatInputView.init(AppCompatInputView.kt:196)
at xxx.AppCompatInputView.<init>(AppCompatInputView.kt:29)
at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(NativeConstructorAccessorImpl.java:-2) at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:490) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:965) at android.view.LayoutInflater.inflate(LayoutInflater.java:663) at android.view.LayoutInflater.inflate(LayoutInflater.java:505) Copy stack to clipboard
这里提示有个空指针异常,代码如下
val attr = context.theme.obtainStyledAttributes(attrs, R.styleable.AppCompatMyEditView, 0, 0)
val text = attr.getString(R.styleable.AppCompatMyEditView_HintText)
setEditTextHitText(text!!)
修改一下代码,将setEditTextHitText
方法的判空加上,重新Build & Refresh
,预览就可以解决。
Failed to find the style corresponding to the id -1
这个错误非常的明显,以往我们写View的时候,习惯写成如下
public MyTextView(Context context){
this(context,null)
}
public MyTextView(Context context, AttributeSet attr){
this(context,attr,-1)
}
有问题就是上方的代码-1
,修改成标准的自定义写法即可
public MyTextView(Context context){
super(context,null)
init(context,null,0)
}
public MyTextView(Context context, AttributeSet attr){
super(context,attr)
init(context,null,0)
}
修改一下,布局即可正常预览
版权属于:Monster_4y
本文链接:https://blog.zmonster.top/86.html
转载时须注明出处及本声明