2012-05-15 18 views
1

我有这个类,省略了代码,使其更易于阅读:是否有任何类在Android中被视为Context或者是否有必须完成的具体事情?

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*/} 

} 

我的假设是错误的,是否有我缺少的东西。

+1

您可能需要将TimeTrackerOpenHelper构造函数设为public。 – superfell

回答

0

Android Activity是Context的一个子类。见Activity source。不,不是每个班级都被认为是Android中的一个环境。你必须扩展上下文,但我不认为你会想要执行这样的事情和需要。

+0

我不需要。我已经看到教程使用这个,他们都把它发送到它,它工作得很好。由于某种原因,它给了我这个错误,让我困惑为什么会发生这种情况。 – Andy

+0

我试图编译并运行与您的示例相同的源代码,但未收到任何错误。从这个角度来看,这是不可能的。你有可能分享完整的源代码吗? –

0

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

2

由于Activityandroid.content.Context派生,你的代码应该编译没有错误,只要通过TimeTrackerOpenHelper(Context context)使用的Context类也是android.content.Context,而不是从一个不同的包Context类。

编辑

由于superfell的评论,我认为这个问题是TimeTrackerOpenHelper的构造函数的可见性。尝试公开:

public TimeTrackerOpenHelper(Context context) { 
+0

那就是我说的。我不知道为什么它不会摆脱错误。正如你所看到的,我是从Activity延伸出来的,而我正在发送正确的东西......但我无法弄清楚原因。但是,我很欣赏上下文的快速提示。 – Andy

+0

你可以发布定义'TimeTrackerOpenHelper'的文件的'import'语句吗? –

相关问题