从另一个类调用子类方法 - Android(java)

时间:2013-01-02 16:21:59

标签: 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
        }
    }
}

Results.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."
        }
    }
}

3 个答案:

答案 0 :(得分:6)

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

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

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

请阅读nested classes tutorial

答案 1 :(得分:1)

听起来你错过了Results.java顶部的导入

它看起来应该像import com.somepackage.DatabaseHelper;

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

答案 2 :(得分:0)

在您确定需要它们之前,请不要使用嵌套类。 将DatabaseHelper移动到单独的类文件中,并在需要时导入它。