将可空值从 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);
我也想传递可为空的 Float
s 和 Integer
s 但相应的 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
当然,floats
和 ints
也是可能的。
使用
将Strings
从activity传递到片段时
Bundle args = new Bundle();
args.putString(key, value);
fragment.setArguments(args);
我也可以传递潜力 null
并在
String string = getArguments().getString(key);
我也想传递可为空的 Float
s 和 Integer
s 但相应的 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
当然,floats
和 ints
也是可能的。