无法在 android 中访问从一个类到另一个类的方法。实际上,我正在尝试的是
ClassA.java
class ClassA extends Activity
{
method_1();
}
ClassB.java
class ClassB extends BroadCastReciever
{
// I need to access the method_1 from the class ClassA.
}
我怎样才能做到这一点?
里面ClassA
声明公共方法从ClassB
创建对象ClassA
和访问方法使用对象写下面的代码里面ClassB
喜欢
ClassA classa = new ClassA();
classa.method_1();
笔记 :
如果可能的话,不要创建类,就static
好像没有必要一样。
public
为.提供类修饰符
第一个解决方案
声明method1()
如下 -
public static void method_1()
{
}
然后您可以通过ClassB
以下方式访问它 -
ClassA.method1();
第二种解决方案
创建一个对象ClassA
并从中访问method1()
,ClassB
如下所示 -
ClassA classA = new ClassA();
classA.method1();
编辑:
如果这两个类都在同一个包中,那么您可以使用protected
而不是public
在第一个解决方案中。
标记method_1();
为公共和静态例如:
class ClassA extends Activity
{
public void static method_1();
}
那么您应该能够在method_1();
不创建 A 类对象的情况下进行访问。
我猜你不能从扩展 android 活动的类中访问方法,但是你可以像这个例子一样向活动类添加一个内部或帮助类:
有两种方法可以访问它
1)您需要将方法创建为公共静态方法(),以便您可以通过调用类名点方法名(如Aaa.method())在任何地方访问它;
2)或者您需要一个对象来调用方法,例如将 Aaa 的对象传递给广播类并在其上调用方法。
编辑:
如果您将上下文从活动 A 传递到广播类,那么您可以将上下文转换为活动对象以调用其公共方法。
喜欢:在广播课上:
((yourActivityName)context).method();
基本上你可以从另一个类调用任何方法,只要它是公共的。如果方法是静态的,你甚至不需要实例化它。但是阅读一些教程以了解 OOP 的基本概念,而不是仅仅为您的特定问题寻找解决方案,它会帮助更多!
你不应该这样做......你怎么知道活动是否仍然存在?将消息从 BroadcastReceiver 发送到活动(在 onCreate/onresume 中注册自定义接收器并在 onDestroy/onPause 中取消注册)的最佳方式是从 BroadcastReceiver 发送另一条广播消息。
但是您可以捕获已经在活动中的初始广播。考虑使用 OrderedBroadcastReceivers。