【问题标题】:Passing Nullable Values from Activity to Fragment将可空值从 Activity 传递到 Fragment
【发布时间】:2016-11-12 02:52:17
【问题描述】:

当将Strings 从一个活动传递到一个片段时,使用

Bundle args = new Bundle();
args.putString(key, value);
fragment.setArguments(args);

我也可以通过潜在的null 并在片段中接收它

String string = getArguments().getString(key);

我还想传递可为空的 Floats 和 Integers,但相应的 putInt()putFloat() 方法不允许传递 null。我现在将其他标志作为参数传递,以指示是否设置了一个值,但相比之下这似乎相当笨拙。是否有更好的方法来传递潜在的 null 值(最好在 API 级别 14 及更高版本中提供)?

【问题讨论】:

    标签: java android android-fragments arguments bundle


    【解决方案1】:

    我更喜欢跳过将 null 的情况放入包中。
    在片段中只需检查Bundle.containsKey(String key),如果不意味着null

    【讨论】:

    • 好点。这保存了标志。 get... 方法实际上执行此检查并允许定义一个当然不能为空的默认值。但这有效。谢谢。
    【解决方案2】:

    这是@Eugene Krivenjas 文本解决方案的 Kotlin 版本 - 以防万一有人喜欢复制/粘贴而不是思考;)

    private fun Bundle.putLongOrSkip(key: String?, value: Long?) =
        apply { value?.let { putLong(key, value) } }
    
    private fun Bundle.getLongOrNull(key: String?) = 
        if (containsKey(key)) getLong(key) else null
    

    floatsints 也可以这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-07
      相关资源
      最近更新 更多