java - 从其他类调用子类方法 - Android (java)

标签 java android database subclass sqliteopenhelper

我有一个正在运行的问答游戏,现在正在尝试实现高分。我创建了一个扩展 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."
        }
    }
}

最佳答案

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

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

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

请阅读nested classes tutorial

关于java - 从其他类调用子类方法 - Android (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14125454/

相关文章:

java - 如何使 Jfreechart 中的鼠标滚轮缩放(setMouseWheelEnabled())仅影响特定轴?

java - 在笛卡尔平面上将两个正方形平均切成两半(找到中点)

android - 使用可见软件键盘的 Activity

python - 为什么我的脚本不起作用,但我可以手动插入到 mysql 中?

java - 尝试填充并返回对象 HashMap 中的列表

Java多维数组被认为是原始或对象

android ConstraintLayoutStates - 如何获取对 constraintLayoutStates 对象的引用?

android - kotlin 中的合成导入不起作用

python - 如何在eclipse中暂停python执行并返回交互式提示

php - 错误处理-如何捕捉?