【问题标题】:Calling subclass method from other class - Android (java)从其他类调用子类方法 - Android (java)
【发布时间】:2013-01-03 00:49:50
【问题描述】:

我有一个正在运行的琐事游戏,现在正在尝试实现高分。我创建了一个扩展 SQLiteOpenHelper 的子类 DatabaseHelper 类。我试图从另一个类调用子类 DatabaseHelper 中的一个方法,但遇到错误。这些类不会编译,因此没有 LogCat 输出。我已经在代码中注释了错误。

代码结构建议也很受欢迎!

Highscores.java

public class Highscores extends Activity {

    DatabaseHelper dh;
    SQLiteDatabase db;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        dh = new DatabaseHelper(context);
    }

    public class DatabaseHelper extends SQLiteOpenHelper { 

        public DatabaseHelper(Context context) { 
            //code
        }

        public boolean check(long score, int percentage) {
            //code
        }
    }
}

结果.java

public class Results extends Activity {

    DatabaseHelper dh;  //Error:  "DatabaseHelper cannot be resolved to a type."

    public void onCreate(Bundle savedInstanceState) {

        dh = new DatabaseHelper();  //Error:  "DatabaseHelper cannot be resolved to a type."
    }

    public void showResults() {

        if(dh.check(score, percentage) == true) {  //Error:  "DatabaseHelper cannot be resolved to a type."
      dh.insert(score, percentage);  //Error:  "DatabaseHelper cannot be resolved to a type."
        }
    }
}

【问题讨论】:

    标签: java android database subclass sqliteopenhelper


    【解决方案1】:

    当您需要在它定义的类之外的类时,我建议将该类创建为单独的类。否则,您需要创建外部类的实例来访问内部类,该内部类将创建 Activity 的实例并在 Activity 实例上调用 DatabaseHelper,这在 Android 中不是一个好方法。

    如果您仍想继续使用现有方法,您需要通过以下方式访问它:

    OuterClass outerObject = new OuterClass();
    OuterClass.InnerClass innerObject = outerObject.new InnerClass();
    

    请阅读nested classes tutorial

    【讨论】:

      【解决方案2】:

      听起来您在 Results.java 顶部缺少导入

      它应该类似于 import com.somepackage.DatabaseHelper;

      此类错误通常是类名中的拼写错误或缺少导入。

      【讨论】:

      • 这似乎已经解决了问题。这是正确的方法吗?从另一个类导入子类似乎很奇怪。
      • 完全正常。一些 IDE 也会自动为您导入它们。通常也有键盘快捷键。例如,在 OSx 上的 Eclipse 中,我点击了 command+shift+o,它修复了所有这些错误。
      【解决方案3】:

      不要使用嵌套类,直到你确定你需要它们。 将 DatabaseHelper 移动到单独的类文件并在需要时将其导入。

      【讨论】:

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