【问题标题】:Supplying custom attribute values to a dynamically created Android fragment为动态创建的 Android 片段提供自定义属性值
【发布时间】:2017-07-22 04:20:18
【问题描述】:

我了解如何为片段定义自定义属性并在 XML 中指定它们的值(如在this answer 中)。但我不确定如何对在Activity.onCreate()动态 创建的片段执行此操作。如何提供属性值,以便片段可以通过在其onInflate() 中调用Context.obtainStyledAttributes() 来获取它们?

【问题讨论】:

    标签: android android-fragments


    【解决方案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
        }
    

    【讨论】:

      猜你喜欢
      • 2012-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多