Android получает дочерний элемент от FrameLayout

Если я создам два класса, родительский класс, который расширяет FrameLayout, и дочерний класс, который расширяет View, а затем использую XML для их инициализации. Можно ли получить дочерние элементы из конструктора родительского класса? Если я использую getChildAt(), я всегда получаю null, так как активность еще не создана.

 <com.example.Parent 
        android:layout_width = "match_parent"
        android:layout_height = "200dp"
        android:layout_centerInParent = "true">

        <com.example.Child
            android:layout_width = "match_parent"
            android:layout_height = "match_parent" />

        <com.example.Child
            android:layout_width = "match_parent"
            android:layout_height = "match_parent" />
    </com.example.Parent>

Родительские и дочерние классы

public class Parent extends FrameLayout { 
    public Parent(@NonNull Context context) {
         super(context);
         this.getChildAt(0); // return null
    }
...  
}

public class Child extends View {  
...  
}

Вы не можете получить дочерний элемент в конструкторе View еще не нарисован. Каков ваш вариант использования дочерних просмотров? Отредактируйте свой вопрос с требованием, чтобы кто-то мог помочь.

ADM 31.01.2019 07:56

вы можете взглянуть на функцию onFinishInflate.

Kingfisher Phuoc 31.01.2019 08:00

onFinishInflate() сделает работу

slaviboy 31.01.2019 08:14
1
3
579
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Поскольку вы вызываете getChildAt при построении вашего FrameLayout, вы получаете нулевые значения (ваши дети все еще не полностью привязаны к представлению). Одним из решений было бы перезаписать onLayout() или onMeasure(), чтобы получить ваши дочерние файлы.

Перед надуванием нельзя получить дочерний вид из родительского.

Но вы можете сделать это динамически, но это также работает так же, как и вы должны добавлять представления вручную в родительское представление.

И тогда вы можете получить дочерние представления из родительского представления.

Другие вопросы по теме