我目前有两个活动,MainActivity 和 ResultActivity,它们都将使用相同的片段 - 收藏夹。我的问题是:如何知道哪个活动包含片段?例如我在Activity ResultActivity中有一个片段A,我怎么知道片段A是包含在ResultActivity还是MainActivity中?
问问题
79 次
2 回答
1
您可以检查此活动的实例。
getActivity() - 可以返回空值,所以你需要检查一下。
爪哇
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
}
编辑:您也可以使用另一种方法requireActivity不同之处在于您收到 notNull 值,但如果活动为 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){}
于 2021-12-05T01:24:12.350 回答
0
我认为这对你来说是最好的做法。
要获得 Activity 你应该使用 requireActivity()
要获得 Context 你应该使用 requireContext()
// for kotlin
fun isMainActivity(): Boolean {
return requireActivity() is MainActivity
}
public boolean isMainActivity() {
return requireActivity() instanceof MainActivity;
}
于 2021-12-05T05:28:58.833 回答