我想创建一个自定义 ConstraintLayout 以便我可以从其初始化的活动中触发一些功能。
我有以下代码:
首先在布局中初始化我的自定义视图:
<package.com.app.Main.LavadasView
android:id="@+id/main_autolavados_lavadas_lavadas_view"
android:layout_width="0dp"
android:layout_height="25dp"
...
/>
这是我的自定义类 LavadasView,从另一个 XML 文件初始化的约束布局:
Java类
public class LavadasView extends ConstraintLayout {
public LavadasView(Context context,AttributeSet attrs) {
super(context);
//Inflate view from XML layout file
LayoutInflater inflater =(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.lavadas_view, this);
}
public void resetView(){
//Some ui updates
}
}
LavadasView xml 文件,只是一个普通的约束布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.constraint.ConstraintLayout>
在我的 Activity 中findViewById,我使用 mehtod获取实例,然后我想调用 resetView 函数,这给了我一个与 LavadasView 相关的空指针异常:
LavadasView lavadasView = (LavadasView) findViewById(R.id.main_autolavados_lavadas_lavadas_view);
//Call this method later on
lavadasView.resetView();
所以我做错了什么?我查了一下,这不是获取布局实例的正确方法吗?
呼如林
相关分类