Java类是否有任何方法可以知道它是从Fragment还是从Activity调用的?我正在为Android编程,如果它有任何区别
答案 0 :(得分:1)
如果您可以更改主叫代码,则可以使用以下内容:
public class MyClass {
public MyClass(boolean fromActivity) {
if (fromActivity) {
// handle call from activity
}
else {
// handle call from fragment
}
}
}
如果除了Acitivities / Fragments之外还有其他任何东西调用您的代码,您可以随时使用枚举。
答案 1 :(得分:1)
我同意@ basant_matharu在你帖子中的评论。
即使我们无法确定,但这并不意味着我们无法真正知道它是一个活动还是片段。
我可能在这里错了,这可能完全没有问题。但是,如果,只是你想要知道它是一个活动还是一个片段。在那种情况下,我们不能只传递两个结果;一个来自活动,另一个来自片段,假设在另一个活动中,只是确定结果是来自活动还是来自片段。
例如;
我们传递一些传递或只是使用一些首选项来存储来自ActivityA的值:可能是字符串结果。
我们从片段做同样的事情,也只是在片段中使用偏好。 :也许是一个字符串结果。
现在,在第三个活动中,我们得到两个值;一个来自活动,一个来自片段。
之后我们只是比较结果并查看值的来源。像,
如果值来自activity,则string resultfromactivity;返回活动(SomeStringPlaceholder)并在这里做一些代码....和Fragment相同。
通过这种方式,我们只知道值是来自活动还是片段。
再次,我可能在这里错了。所以,如果有人想编辑或提出建议,我会很乐意接受。
答案 2 :(得分:1)
这可以通过检查调用堆栈来实现 - 请查看此问题以了解如何知道如何执行此操作: Get current stack trace in Java 您可以将它放入类构造函数中,然后检查调用它的内容。
然而:
这通常不是编写程序的好方法。实现它的更好方法是在构造函数中添加一些参数,为类创建工厂方法或使用其他可能与常用编程模式不对的可能性。