将可空值从 Activity 传递到 Fragment

Passing Nullable Values from Activity to Fragment

使用

Strings从activity传递到片段时
Bundle args = new Bundle();
args.putString(key, value);
fragment.setArguments(args);

我也可以传递潜力 null 并在

的片段中接收它
String string = getArguments().getString(key);

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

我更喜欢跳过将 null 的东西放入包中。
在片段中检查 Bundle.containsKey(String key),如果不表示 null.

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

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 也是可能的。