无法在android中访问从一个类到另一个类的方法

无法在android中访问从一个类到另一个类的方法,android,methods,Android,Methods,无法在android中访问从一个类到另一个类的方法。 事实上,我正在尝试的是 ClassA.java class ClassA extends Activity { method_1(); } class ClassB extends BroadCastReciever { // I need to access the method_1 from the class ClassA. } ClassB.java class ClassA extends Activity {

无法在android中访问从一个类到另一个类的方法。 事实上,我正在尝试的是

ClassA.java

class ClassA extends Activity
{
    method_1();
}
class  ClassB extends BroadCastReciever
{
    // I need to access the method_1 from the class ClassA.
}
ClassB.java

class ClassA extends Activity
{
    method_1();
}
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(); 
注意:

  • 如果可能,不要将类创建为
    静态
    (如果不需要)

  • 公共
    提供类修饰符


    • 第一个解决方案

      声明您的
      method1()
      ,如下所示-

      public static void method_1()
      {
      
      } 
      
      ClassA.method1();
      
      然后您可以从
      ClassB
      访问它,如下所示-

      public static void method_1()
      {
      
      } 
      
      ClassA.method1();
      
      第二种解决方案

      创建
      ClassA
      的对象,并从
      ClassB
      访问
      method1()
      ,如下所示-

      ClassA classA = new ClassA();
      classA.method1();
      
      编辑:


      如果两个类都在同一个包中,那么您可以在第一个解决方案中使用
      受保护的
      而不是
      公共的

      有两种方法可以访问它

      1) 您需要将该方法创建为publicstaticmethod(),以便可以通过调用类名dot method name(如Aaa.method())在任何地方访问它

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

      编辑:

      若要将上下文从活动A传递到brodcast类,那个么可以将上下文转换为活动对象以调用其公共方法

      比如: 在brodcast类中:

      ((yourActivityName)context).method();
      
      标记
      方法_1()作为公共和静态
      例如:


      然后您应该能够访问
      method_1()不创建类a的对象。

      我猜您无法从扩展android中活动的类访问方法,但是您可以向活动类添加内部类或帮助类,如以下示例所示:


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

      你永远都不可能做到这一点。。。您如何知道该活动是否仍然存在?将消息从BroadcastReceivers发送到Activities(在onCreate/onresume中注册自定义接收器,并在onDestroy/onPause中注销)的最佳方式是从BroadcastReceivers发送另一条广播消息


      但是你可以在活动中看到最初的广播。考虑使用有序广播接收器.< /P>方法()作为静态方法。这是java的基础。您需要首先清除java概念。将方法_1()设置为STATICClassA是活动。制作活动对象不是好的做法