我有一个像这样的简单布局:
<?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 Activity覆盖中添加了一个日志,以查看以这种方式创建的视图:
@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方法,因此我无法修改此视图上的任何内容。看来这种方法只接收容器吗?
如果有人知道为什么会这样,我会非常感激。
干杯。
答案 0 :(得分:-2)
onCreateView
生命周期方法用于将布局设置为片段。在这个生命周期方法中,我们无法进行任何更新,因为尚未创建布局。
如果您想更新任何视图标签,我们可以使用onViewCreated
生命周期方法。