Android程序中的Java语法WRT静态方法
我通常做Windows/C#/C++编程,但我涉猎过Android,所以我被要求查看Android程序以修复其中的一个bug。我没有重新设计它的任务,所以静态的东西是静态的 问题在于:在一个活动中,它有一个公共静态方法。它还有所有常用的非静态方法。这个特殊活动类有一个实例 我希望能够对这个活动类调用一些非静态方法,并从静态方法访问它的一些数据。显然,如果我直接这么做,我会 无法对非静态方法进行静态引用Android程序中的Java语法WRT静态方法,java,android,Java,Android,我通常做Windows/C#/C++编程,但我涉猎过Android,所以我被要求查看Android程序以修复其中的一个bug。我没有重新设计它的任务,所以静态的东西是静态的 问题在于:在一个活动中,它有一个公共静态方法。它还有所有常用的非静态方法。这个特殊活动类有一个实例 我希望能够对这个活动类调用一些非静态方法,并从静态方法访问它的一些数据。显然,如果我直接这么做,我会 无法对非静态方法进行静态引用 我假设在使用此上下文或某些上下文的onStart()或onCreate()方法期间,必须有一种
我假设在使用此上下文或某些上下文的onStart()或onCreate()方法期间,必须有一种方法将对特定Activity类实例的引用隐藏在某个全局公共场所,然后在静态方法中使用该引用进行调用,例如
myStoredClassInstance.aNonStaticMethod();
…但我不知道语法。有人能帮我吗
PS在你说这是一个重复之前:请注意,这个问题是关于调用一个单独类的非静态方法,因此答案涉及动态创建该类的新实例。在我的例子中,我想知道访问现有特定类的语法 这似乎对我有用 创建一个类成员
private static MyActivity myActivityClassInstance = null;
在onCreate()中
在同一类的静态方法中
if (myActivityClassInstance != null) {
myActivityClassInstance.myNonStaticMethod();
}
我将它包装在一个null测试中,因为它可能在调用onCreate()之前被调用。另一方面,onCreate()恰好是我被要求修改的程序中发生的第一件事。如果你对你的项目有更多的控制权,可能有更好的地方来放置这个 “我假设一定有一种方法可以在某个全局公共场所中隐藏对活动类的特定实例的引用”——只有在您喜欢内存泄漏和错误代码的情况下。“我希望能够在此活动类上调用一些非静态方法,并从静态方法访问其部分数据”--调用方应将
活动
作为参数传入,因为有人决定不将该方法设为非静态
。“在你说这是一个重复之前”——这是一个重复,因为你的场景和链接到的问题没有什么不同。。。。除了建议的解决方案不适用于我的问题。所以,如果有人在寻找我问题的答案,那么遵循这个链接对他们没有帮助。无论如何,我有一个适合我的解决方案,所以如果有人不先发布,我会发布它。你引入了内存泄漏。
if (myActivityClassInstance != null) {
myActivityClassInstance.myNonStaticMethod();
}