为动态创建的 Android 片段提供自定义属性值
Posted
技术标签:
【中文标题】为动态创建的 Android 片段提供自定义属性值【英文标题】:Supplying custom attribute values to a dynamically created Android fragment 【发布时间】:2017-07-22 04:20:18 【问题描述】:我了解如何为片段定义自定义属性并在 XML 中指定它们的值(如在this answer 中)。但我不确定如何对在Activity.onCreate()
中动态 创建的片段执行此操作。如何提供属性值,以便片段可以通过在其onInflate()
中调用Context.obtainStyledAttributes()
来获取它们?
【问题讨论】:
【参考方案1】:如何提供属性值
您需要制作片段处理参数(请参阅setArguments()),然后将您需要的任何内容传递给新创建的片段对象,覆盖 XML 或 framgent 默认值。
【讨论】:
嗨马尔辛。我了解如何做到这一点(以及我当前的解决方法),但使用参数意味着,如果我想让片段在 xml 中静态创建或动态创建,我需要执行两次属性值处理。这对我来说似乎不对。 您可以为每个处理的属性创建单独的 setter 方法,并将数据从 bundle 的 XML 属性传递到 is 进行处理,因此您仍然有一个实现。the attribute value handling twice
使用参数是唯一正确的方法,因为它会自动处理片段重新实例化【参考方案2】:
使用以下代码:
@Override
public void onInflate(Activity activity, AttributeSet attrs, Bundle savedInstanceState)
super.onInflate(activity, attrs, savedInstanceState);
// Your code here to process the attributes
【讨论】:
以上是关于为动态创建的 Android 片段提供自定义属性值的主要内容,如果未能解决你的问题,请参考以下文章