Я хочу создать пользовательский 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
}
}
XML-файл LavadasView, просто нормальный макет ограничения:
<?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();
ТАК, что я делаю не так?Я посмотрел, и это правильный способ получить экземпляр макета, не так ли?
Спасибо.