0

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

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

高分.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."
        }
    }
}
4

3 回答 3

6

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

如果您仍想继续使用现有方法,这就是您需要访问它的方式:

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

请阅读嵌套类教程

于 2013-01-02T16:24:41.280 回答
1

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

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

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

于 2013-01-02T16:24:11.983 回答
0

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

于 2013-01-02T16:41:43.710 回答