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,因此只要Context使用的类TimeTrackerOpenHelper(Context context)也是android.content.Context,而不是Context来自不同包的类,您的代码就应该编译没有错误。

编辑

感谢 superfell 的评论,我认为问题在于TimeTrackerOpenHelper' 构造函数的可见性。尝试公开:

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

Android Activity 是 Context 的子类。请参阅活动源。不,并不是每个类都被视为 Android 中的上下文。你必须扩展 Context 但我不认为你会想要执行这样的事情并且需要这样做。

于 2012-05-15T22:33:12.887 回答
0

没有唯一包含上下文引用的“类”是活动和服务。例如,如果您使用广播接收器,您会在侦听器方法中收到上下文引用。

于 2012-05-15T22:34:21.227 回答