我试图从另一个类调用一个方法但是我得到一个异常错误。
我有两个班级,班级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错误谢谢。
答案 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)
我知道这有点晚了,但是花了整整两天才找到解决方案,这个对我来说绝对有用,这对其他人有用:
将第一个类中所需的函数(扩展Activity的MainActivity)定义为Static:
public static int getScreenH(){
Integer H = Sheight;
return H;
}
然后在另一个类(ResizeTextView类扩展TextView)中调用函数:
Integer hh = MainActivity.getScreenH();
就是这样!问题是调用类是TextView的扩展,因此Activity中没有可用的方法!