0

我目前有两个活动,MainActivity 和 ResultActivity,它们都将使用相同的片段 - 收藏夹。我的问题是:如何知道哪个活动包含片段?例如我在Activity ResultActivity中有一个片段A,我怎么知道片段A是包含在ResultActivity还是MainActivity中?

4

2 回答 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 回答