1

私はこのクラスを持っていますが、読みやすくするためにコードを省略しています:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.ListView;
public class TimeTrackerActivity extends Activity {

    //some code here
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ListView listView = (ListView) findViewById(R.id.times_list);

    listView.setAdapter(timeTrackerAdapter);

    TimeTrackerOpenHelper openHelper = new TimeTrackerOpenHelper(this);
    //my error with line of code right above saying
    //the constructor of TimeTrackerOpenHelper(TimeTrackerActivity) is undefined

    }
    //more code here
}

エラーがどこにあるかをコメントしました。私は他の例をオンラインで見ましたが、他のすべての人がこれを SQLiteOpenHelper を拡張するクラスに送信しているため、機能していると思います。しかし、そうではありません。私のコードは次のとおりです。

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class TimeTrackerOpenHelper extends SQLiteOpenHelper {

TimeTrackerOpenHelper(Context context) {
    super(context, "timetracker.db", null, 1);
}

public void onCreate(SQLiteDatabase database) {/*stuff*/}

public void onUpgrade(SQLiteDatabase datbase, int oldVersion, int newVersion) {/*stuff*/}

}

私の仮定は間違っていますか、私が見逃しているものはありますか。

4

3 に答える 3

2

はからActivity派生しているため、 で使用されるクラスも であり、別のパッケージのクラスではないandroid.content.Context限り、コードはエラーなしでコンパイルされます。ContextTimeTrackerOpenHelper(Context context)android.content.ContextContext

編集

TimeTrackerOpenHelpersuperfell さんのコメントのおかげで、問題はのコンストラクターの可視性だと思います。公開してみてください:

public TimeTrackerOpenHelper(Context context) {
于 2012-05-15T22:35:15.193 に答える
0

Android Activity は Context のサブクラスです。アクティビティ ソースを参照してください。いいえ、すべてのクラスが Android のコンテキストと見なされるわけではありません。Context を拡張する必要がありますが、そのようなことを実行したいとは思わないし、実行する必要もありません。

于 2012-05-15T22:33:12.887 に答える
0

いいえ、コンテキスト参照を含む唯一の「クラス」はアクティビティとサービスです。たとえば BroadcastReceiver を使用すると、リスナー メソッドでコンテキスト参照を受け取ります。

于 2012-05-15T22:34:21.227 に答える