Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从类中调用活动(未知)的方法_Java_Android_Android Activity - Fatal编程技术网

Java 从类中调用活动(未知)的方法

Java 从类中调用活动(未知)的方法,java,android,android-activity,Java,Android,Android Activity,我想从非活动类调用activityA、activityB和activityC中定义的方法。我只想调用任何一个活动的方法。 e、 g.activity.method(),其中activity为activityA或activityB或activityC ((Object) this.context)).method(); 在上面的行中,我需要指定活动的对象。如何在运行时确定具有活动上下文的对象的名称 注意:在real中,我有这样10-15个活动。这里有一个建议: 使用“method()”签名创建接

我想从非活动类调用activityA、activityB和activityC中定义的方法。我只想调用任何一个活动的方法。 e、 g.activity.method(),其中activity为activityA或activityB或activityC

((Object) this.context)).method();
在上面的行中,我需要指定活动的
对象。如何在运行时确定具有活动上下文的对象的名称

注意:在real中,我有这样10-15个活动。

这里有一个建议:

  • 使用“method()”签名创建接口
  • 让所有活动实现该接口
  • 获得上下文后,可以将活动类型转换到该接口并调用“method()”
  • 请记住,在try-catch块中执行类型转换,这样,如果您遇到一个场景,在该场景中,您试图对未实现接口的活动调用该方法,那么您可以安全地处理TypeCastException
  • 希望这能有所帮助。

    这里有一个建议:

  • 使用“method()”签名创建接口
  • 让所有活动实现该接口
  • 获得上下文后,可以将活动类型转换到该接口并调用“method()”
  • 请记住,在try-catch块中执行类型转换,这样,如果您遇到一个场景,在该场景中,您试图对未实现接口的活动调用该方法,那么您可以安全地处理TypeCastException

  • 希望这有帮助。

    下面的代码可能会对您有所帮助

    if(context instanceof ActivityA)
    ((ActivityA) this.context)).method();
    else if(context instanceof ActivityB)
    ((ActivityB) this.context)).method();
    else if(context instanceof ActivityC)
    ((ActivityC) this.context)).method();
    

    下面的代码可能会对您有所帮助

    if(context instanceof ActivityA)
    ((ActivityA) this.context)).method();
    else if(context instanceof ActivityB)
    ((ActivityB) this.context)).method();
    else if(context instanceof ActivityC)
    ((ActivityC) this.context)).method();
    

    我认为在A、B、C活动中定义静态方法并调用适当的活动方法更好。据我所知,您需要一个全局方法。为什么不在一些非活动类中将其声明为公共静态呢?如果您需要在方法中使用活动实例,只需将其添加为参数,例如myMethod(活动a),并在从某个活动调用时传递它。我认为在a、B、C活动中定义静态方法并调用相应的活动方法更好。据我所知,您需要一个全局方法。为什么不在一些非活动类中将其声明为公共静态呢?如果您需要在方法中使用活动实例,只需将其添加为参数,例如myMethod(活动a),并在从某个活动调用时传递它。如果需要调用该方法的活动/对象数量增加,则此解决方案可能不太合适。是的,您是对的。然后使用侦听器或抽象基类可以实现这一点。如果需要调用方法的活动/对象数量增加,则此解决方案可能不太合适。是的,您是对的。然后使用侦听器或抽象基类就可以实现这一点。我对它的实现有疑问。考虑一下我总共有10个活动。我有一个接口
    myInterface
    ,它由activityA、activityB和activityC实现。当我调用
    myInterface
    的方法
    myMethod()
    时,它将调用在所有三个活动中定义的
    myMethod()
    。这是一个问题。我想调用在我拥有
    上下文的活动中定义的方法。这个问题可以很容易地解决。假设ActA、ActB、ActC(都实现接口(MyInterface)),这些活动中的每一个都需要有自己的myMethod()实现。调用ActA.myMethod()时,调用将转到该特定活动,如本例中的ActA。进一步扩展示例,如果您需要myMethod的通用实现,在这种情况下,您可以将MyInterface创建为抽象类而不是接口,并将通用实现提供给抽象基类,即(MyInterface)在实际的活动类中有特殊的实现。我对它的实现有一个疑问。考虑到我总共有10个活动。我有一个接口:代码> MyPosie<代码>,它由Activity、Activity和Activity来实现。当我调用<代码> MyPosie<代码> MyMultMeMyType()/代码>时,它将调用<代码> MyMultMeod()。
    在所有三个活动中定义。这是一个问题。我想调用在我拥有
    上下文的活动中定义的方法。这个问题很容易解决。假设ActA、ActB、ActC(都实现接口(MyInterface),这些活动中的每一个都需要有自己的myMethod()实现。当您调用ActA.myMethod()时,调用将转到该特定活动,例如本例中的ActA。进一步扩展示例,如果您需要myMethod的通用实现,在这种情况下,您可以将MyInterface创建为抽象类而不是接口,并将通用实现提供给抽象基类,即(MyInterface)以及在实际活动类中的特殊实现。