Активность onCreateView не получает все виджеты в макете

У меня есть простой макет, как это:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    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"
    tools:context="com.empresa.prueba.MainActivity">


    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_gravity="center_vertical|center_horizontal" android:text="Button"
        app:layout_anchor="@+id/include"
        app:layout_anchorGravity="center_vertical|center_horizontal"/>
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        app:srcCompat="@drawable/image2"/>

</LinearLayout>

Я хочу изменить метку кнопки во время ее создания (я использую методы onCreateView в действии вместо пользовательской фабрики). Проблема в том, что я никогда не получаю элемент управления виджетом кнопки, когда Android вызывает onCreateView для каждого представления в макете.

Я добавил журнал в переопределения действий onCreateView, чтобы увидеть, какие представления создаются таким образом:

@Override
    public View onCreateView(View v, String s, Context c, AttributeSet as)
    {
        Log.i("Inflating ---> ",s);
        return super.onCreateView(v,s,c,as);
    }

    @Override
    public View onCreateView(String s , Context c, AttributeSet as)
    {
        Log.i("Inflating ---> ",s);
        return super.onCreateView(s,c,as);
    }

Но вывод, который я получаю:

I/Inflating --->: LinearLayout
I/Inflating --->: LinearLayout
I/Inflating --->: ViewStub
I/Inflating --->: ViewStub
I/Inflating --->: FrameLayout
I/Inflating --->: FrameLayout
I/Inflating --->: android.support.v7.widget.FitWindowsLinearLayout
I/Inflating --->: android.support.v7.widget.FitWindowsLinearLayout
I/Inflating --->: android.support.v7.widget.ViewStubCompat
I/Inflating --->: android.support.v7.widget.ViewStubCompat
I/Inflating --->: android.support.v7.widget.ContentFrameLayout
I/Inflating --->: android.support.v7.widget.ContentFrameLayout
I/Inflating --->: LinearLayout
I/Inflating --->: LinearLayout

Как вы можете видеть, ни кнопка, ни Imageview не передаются в методы onCreateView, поэтому я не могу ничего изменить в этих представлениях. Кажется, это методы только получать контейнеры?

Если кто-нибудь знает, почему это происходит, я буду очень признателен.

Приветствия.

1 ответ

onCreateView Метод жизненного цикла для установки макета на фрагмент. В этом методе жизненного цикла мы не можем делать какие-либо обновления, потому что макет еще не создан.

Если вы хотите обновить ярлык любого представления, мы можем сделать в onViewCreated метод жизненного цикла.

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