2014-02-19 50 views
-1

我想初始化一個調用另一個使用AsyncTask的類的類。我正在使用GetDataFromDB gDataFromDB = new GetDataFromDB(),但它不初始化類,它只是讓我訪問類中的任何靜態方法。那麼我該怎麼做才能讓onCreate方法運行?我一直在使用意圖,但不斷收到錯誤嘗試,因爲這是一個靜態類從靜態類調用AsyncTaks的類

public class FacadeDataFromDB extends Activity { 

static ArrayList<HashMap<String, String>> visitorsList; 
private static FacadeDataFromDB dataFromDB; 
static boolean accessDB = false; 

private FacadeDataFromDB() { 

} 

public static void initInstance() { 

} 

public static FacadeDataFromDB getInstance() { 
    if (dataFromDB == null) { 
     // Create the instance 
     dataFromDB = new FacadeDataFromDB(); 
    } 
    return dataFromDB; 
} 

public static void setData() { 
    if (!accessDB) { 
     GetDataFromDB gDataFromDB = new GetDataFromDB(); 
     accessDB = true; 
    } 
    // visitorsList = gDataFromDB.returnInfoFromDB(); 
} 

public static ArrayList<HashMap<String, String>> getVisitorForDay() { 
    // TODO Auto-generated method stub 
    setData(); 
    return visitorsList; 
} 

}

GetDataFromDB是我打電話的其他類。當前類是一個靜態類,並使用一個單例,因爲我只希望該類的一個初始化從數據庫獲取數據。如果您有更多問題或想要我發佈代碼,請告訴我。謝謝

+0

GetDataFromDB.java中的方法是否設置爲private? – Emmanuel

+0

不,GetDataFromDB中的onCreate是公共的。我可以調用它,但不知道要在參數中放置什麼。 – Aaron

+1

你永遠不應該調用'Activity'的生命週期方法。在適當的時候,系統會爲您調用這些方法。 – Emmanuel

回答

0

我不確定你是否完全理解Android運行時。您應該使用Intent對象開始活動,而不是像現在一樣使用new關鍵字創建活動。爲確保在您的活動中調用您的onCreate()方法,您可以從其他Activity/ContextIntent intent = new Intent(currentContext, FacadeDataFromDB.class);啓動明確的Intent。

另外,當涉及到Activities時,您不應該使用私有構造函數。看到這個職位的原因why

+0

Android運行時對我來說是一個謎。我在一個靜態類中,它不會讓我使用Intent。我一直在獲取不能在靜態上下文中使用此錯誤 – Aaron

+0

靜態內部類沒有對它們包含的類的隱式引用 - 這可能是您遇到的問題。在構建它時,應該將內部類傳遞給Context,將其存儲爲WeakReference ,並在內部類中需要上下文時使用它。這聽起來像你可能想重新考慮你的程序的組織,但。 – Submersed