从Android中的其他类调用方法

时间:2011-02-25 13:54:53

标签: android oop

我试图从另一个类调用一个方法但是我得到一个异常错误。

我有两个班级,班级1是主班级

Class 1有一个onclick方法,可以从另一个类onclick调用该方法。

我在第1课中声明了textfields和edittexts。

Class 2具有这些功能并使用if语句。

我从第2类扩展了第1类,因此第2类使用变量。

我可以用什么方法从android中的其他类调用方法。

目前我只使用以下方法在第1类中调用第2类中的方法:

class1.method(); 

但这似乎不起作用。感谢任何建议。

编辑:

我现在在第1课中创建了一个变量:

static class2 object;

从此我打电话给onclick

object.class2method();

我得到nullPointerexception错误谢谢。

3 个答案:

答案 0 :(得分:3)

如果我已正确理解您的问题,如果您想在扩展类中调用方法,则需要确保这些方法是公共的或受保护的。

同样省略了班级名称,例如只需拨打method()而不是class.method()

再详细说明一下,这里有一些我刚刚编写的代码:

class class1 {
    private void privateMethod() {
        // do nothing
    }
    protected void protectedMethod() {
        // do nothing
    }
    public void publicMethod() {
        // do nothing
    }
}
class class2 extends class1 {
    private void testMethod() {
        privateMethod();    // error - not visible
        protectedMethod();    // works
        publicMethod(); // also works
    }
}

答案 1 :(得分:2)

已编辑(因为Kevin删除了之前的回答)

Android在这种情况下有点具体......

如果你的一个类是Activity而另一个是“helper”类,那么情况意味着你需要在Activity类中创建一个“helper”类的实例。像

这样的东西
private Helper helper = new Helper(this);

并且您可以使用以下命令在Activity的任何位置调用辅助类的方法:

helper.nameOfMethod(requiredParameters);

您的ClassA可能是Activity(因此它扩展了Android Activity类),而ClassB也是Activity,但扩展了ActivityA。在这种情况下,您应该能够使用ActivityB中的ActivityA方法,只需通过方法名称调用它(没有明确写出存储方法的位置)。

methodFromActivityB(parameters);

希望现在更容易理解它。

答案 2 :(得分:1)

我知道这有点晚了,但是花了整整两天才找到解决方案,这个对我来说绝对有用,这对其他人有用:

  1. 将第一个类中所需的函数(扩展Activity的MainActivity)定义为Static:

    public static int getScreenH(){
        Integer H = Sheight;
        return H;
    }
    
  2. 然后在另一个类(ResizeTextView类扩展TextView)中调用函数:

    Integer hh = MainActivity.getScreenH();
    
  3. 就是这样!问题是调用类是TextView的扩展,因此Activity中没有可用的方法!