2

无法在 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.
}

我怎样才能做到这一点?

4

7 回答 7

1

里面ClassA 声明公共方法从ClassB创建对象ClassA和访问方法使用对象写下面的代码里面ClassB

喜欢

ClassA  classa = new ClassA();
classa.method_1(); 

笔记 :

  • 如果可能的话,不要创建类,就static好像没有必要一样。

  • public为.提供类修饰符

于 2013-05-30T11:22:59.230 回答
1

第一个解决方案

声明method1()如下 -

public static void method_1()
{

} 

然后您可以通过ClassB以下方式访问它 -

ClassA.method1();

第二种解决方案

创建一个对象ClassA并从中访问method1()ClassB如下所示 -

ClassA classA = new ClassA();
classA.method1();

编辑:

如果这两个类都在同一个包中,那么您可以使用protected而不是public在第一个解决方案中。

于 2013-05-30T11:24:15.993 回答
0

标记method_1();为公共和静态例如:

class ClassA extends Activity
{
    public void static method_1();
}

那么您应该能够在method_1();不创建 A 类对象的情况下进行访问。

于 2013-05-30T11:30:23.273 回答
0

我猜你不能从扩展 android 活动的类中访问方法,但是你可以像这个例子一样向活动类添加一个内部或帮助类:

从另一个类调用 Activity 类中的公共方法?

于 2013-05-30T11:31:02.603 回答
0

有两种方法可以访问它

1)您需要将方法创建为公共静态方法(),以便您可以通过调用类名点方法名(如Aaa.method())在任何地方访问它;

2)或者您需要一个对象来调用方法,例如将 Aaa 的对象传递给广播类并在其上调用方法。

编辑:

如果您将上下文从活动 A 传递到广播类,那么您可以将上下文转换为活动对象以调用其公共方法。

喜欢:在广播课上:

((yourActivityName)context).method();
于 2013-05-30T11:24:30.830 回答
0

基本上你可以从另一个类调用任何方法,只要它是公共的。如果方法是静态的,你甚至不需要实例化它。但是阅读一些教程以了解 OOP 的基本概念,而不是仅仅为您的特定问题寻找解决方案,它会帮助更多!

于 2013-05-30T11:39:02.043 回答
0

你不应该这样做......你怎么知道活动是否仍然存在?将消息从 BroadcastReceiver 发送到活动(在 onCreate/onresume 中注册自定义接收器并在 onDestroy/onPause 中取消注册)的最佳方式是从 BroadcastReceiver 发送另一条广播消息。

但是您可以捕获已经在活动中的初始广播。考虑使用 OrderedBroadcastReceivers。

于 2013-05-30T11:39:33.773 回答