为动态创建的 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 片段提供自定义属性值的主要内容,如果未能解决你的问题,请参考以下文章

动态SQL基础概念复习(Javaweb作业5)

片段中ListView的android自定义适配器

自定义对话框片段

Android自定义view之利用drawArc方法实现动态效果

Android——自定义View

android 自定义View