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 に答える