我正在尝试初始化一个调用另一个使用AsyncTask的类的类。我正在使用GetDataFromDB gDataFromDB = new GetDataFromDB()但是没有初始化类,它只是让我可以访问类中的任何静态方法。那么我该怎么做才能运行onCreate方法呢?我尝试过使用intent但是一直出错,因为这是一个静态类
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是我正在调用的另一个类。当前类是一个静态类并使用单例,因为我只想从类中初始化从db获取数据。如果您有更多问题或希望我发布代码,请告诉我。感谢
答案 0 :(得分:2)
在我看来,您的两个班级FacadeDataFromDB
GetDataFromDB
不应该继承Activity
为GUI和用户交互做了活动(我的示例中没有看到任何内容),并且它们的生命周期由框架管理:您永远不会使用new
手动创建它们。
请参阅android教程:https://developer.android.com/guide/components/activities.html和Activity javadoc:https://developer.android.com/reference/android/app/Activity.html。
答案 1 :(得分:0)
我不确定您是否完全了解Android运行时。您应该使用Intent
个对象启动活动,而不是使用new
关键字创建活动。为确保在您的Activity中调用onCreate()
方法,您可以从其他Activity/Context
Intent intent = new Intent(currentContext, FacadeDataFromDB.class);
启动显式Intent。
此外,谈到活动,你不应该使用私有构造函数。请参阅此帖子了解原因why。