【发布时间】:2017-07-22 04:20:18
【问题描述】:
我了解如何为片段定义自定义属性并在 XML 中指定它们的值(如在this answer 中)。但我不确定如何对在Activity.onCreate() 中动态 创建的片段执行此操作。如何提供属性值,以便片段可以通过在其onInflate() 中调用Context.obtainStyledAttributes() 来获取它们?
【问题讨论】:
我了解如何为片段定义自定义属性并在 XML 中指定它们的值(如在this answer 中)。但我不确定如何对在Activity.onCreate() 中动态 创建的片段执行此操作。如何提供属性值,以便片段可以通过在其onInflate() 中调用Context.obtainStyledAttributes() 来获取它们?
【问题讨论】:
如何提供属性值
您需要制作片段处理参数(请参阅setArguments()),然后将您需要的任何内容传递给新创建的片段对象,覆盖 XML 或 framgent 默认值。
【讨论】:
the attribute value handling twice 使用参数是唯一正确的方法,因为它会自动处理片段重新实例化
使用以下代码:
@Override
public void onInflate(Activity activity, AttributeSet attrs, Bundle savedInstanceState) {
super.onInflate(activity, attrs, savedInstanceState);
// Your code here to process the attributes
}
【讨论】: