【问题标题】:Unable to access the methods from one class to another class in android无法在android中访问从一个类到另一个类的方法
【发布时间】:2013-05-30 11:18:18
【问题描述】:

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

我该怎么做?

【问题讨论】:

  • method_1() 作为静态方法
  • 这是Java的基础。你需要先清除你的java概念。
  • 将 method_1() 设为 STATIC

标签: android methods


【解决方案1】:

第一个解决方案

如下声明你的method1() -

public static void method_1()
{

} 

然后就可以通过ClassB访问了,如下-

ClassA.method1();

第二个解决方案

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

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

编辑:

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

【讨论】:

    【解决方案2】:

    ClassA内部声明ClassB的公共方法@创建ClassA的对象并使用对象访问方法 在ClassB中写下代码

    喜欢

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

    注意:

    • 如果可能,如果没有必要,不要将类创建为static

    • public提供类修饰符。

    【讨论】:

    • A 类是活动。制作活动的对象不是好习惯
    【解决方案3】:

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

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

    那么您应该能够访问method_1();,而无需创建A类对象。

    【讨论】:

      【解决方案4】:

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

      Call a public method in the Activity class from another class?

      【讨论】:

        【解决方案5】:

        有两种访问方式

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

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

        编辑:

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

        喜欢: 在直播课上:

        ((yourActivityName)context).method();
        

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

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

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

            【讨论】:

              猜你喜欢
              • 2022-12-05
              • 1970-01-01
              • 2017-08-18
              • 1970-01-01
              • 2014-04-16
              • 2017-01-03
              • 2011-04-03
              • 2012-05-03
              • 1970-01-01
              相关资源
              最近更新 更多