通过片段获取父活动
Posted
技术标签:
【中文标题】通过片段获取父活动【英文标题】:get parent activity by a fragment 【发布时间】:2022-01-10 18:43:48 【问题描述】:我目前有两个活动,MainActivity 和 ResultActivity,它们都将使用相同的片段 - 收藏夹。 我的问题是: 如何知道哪个活动包含片段?比如我在Activity ResultActivity中有一个fragment A,如何知道fragment A是包含在ResultActivity还是MainActivity中?
【问题讨论】:
【参考方案1】:您可以检查此活动的实例。
getActivity() - 可以返回 null 值,所以你需要检查这个。
Java
if (getActivity() != null && getActivity() instanceof MainActivity)
// TODO
else if (getActivity() !=null && getActivity() instanceof ResultActivity)
// TODO
科特林
if (activity !=null && activity is MainActivity)
// TODO
else if (activity !=null && activity is ResultActivity)
// TODO
Edited:你也可以使用其他方法requireActivity 不同的是你会收到notNull 值,但是如果activity null 你可以得到IllegalStateException .
requireActivity() - 返回 notNull 值但可以抛出异常。
try
if (requireActivity() instanceof MainActivity)
// TODO
else if (requireActivity) instanceof ResultActivity)
// TODO
catch (Exception e)
科特林
try
if (requireActivity() is MainActivity)
// TODO
else if (requireActivity) is ResultActivity)
// TODO
catch (Exception e)
【讨论】:
非常感谢!!!【参考方案2】:我认为这是最适合你的做法。
要获得 Activity,您应该使用 requireActivity()
要获取上下文,您应该使用 requireContext()
// for kotlin
fun isMainActivity(): Boolean
return requireActivity() is MainActivity
public boolean isMainActivity()
return requireActivity() instanceof MainActivity;
【讨论】:
谢谢你的回答,请问requireActivity()和getActivity()的区别?我找不到合适的答案 ***.com/a/61045701/5429327 这个答案也是正确的,唯一的区别是当您尝试检查 Null 值时,错误将出现在方法 requireActivity 或您的实现中)但我已经更新了答案。以上是关于通过片段获取父活动的主要内容,如果未能解决你的问题,请参考以下文章