【问题标题】:Calling methods from other classes in Android从 Android 中的其他类调用方法
【发布时间】:2011-07-04 07:59:16
【问题描述】:

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

我有两个班,第一班是主班

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

我在类 1 中声明了文本字段和编辑文本。

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

我从类 2 扩展类 1,所以类 2 使用变量。

我可以通过哪些方式调用android中其他类的方法。

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

class1.method(); 

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

编辑:

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

static class2 object;

从此我打电话给onclick

object.class2method();

我收到一个 nullPointerexception 错误,谢谢。

【问题讨论】:

  • 你的代码能编译吗?你得到什么样的错误?
  • 您能粘贴更多代码吗?为什么它不起作用?它会抛出什么错误?
  • **"我从类 2 扩展类 1,所以类 2 使用变量。" ** 你从类 2 扩展类 1.. 那么类 2 如何使用类 1 中定义的变量.....

标签: android oop


【解决方案1】:

我知道这有点晚了,但是花了整整 2 天的时间来寻找解决方案,这个绝对适合我,可能对其他人有用:

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

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

    Integer hh = MainActivity.getScreenH();
    

就是这样!!问题是调用类是 TextView 的扩展,所以不能使用 Activity 中可用的方法!

【讨论】:

    【解决方案2】:

    已编辑(因为凯文删除了之前的答案)

    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);
    

    希望现在更容易理解。

    【讨论】:

      【解决方案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
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-29
        • 1970-01-01
        相关资源
        最近更新 更多