2012-05-15 38 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'語句嗎? –

相關問題