当它作为另一个类中的参数传入时,如何引用类的相同实例?

时间:2015-02-26 23:27:47

标签: java android

我在这一个类中扩展了SQLiteOpenHelper,并使用以下方法更新了我的数据库。

public void UpDateDataBase(ItemClass itemClass){

    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(KEY_ItemClass_NAME, itemClass.getTaskName());
    contentValues.put(KEY_STATUS, itemClass.getStatus());
    db.update(TABLE_NAME, contentValues, KEY_ID + " = ?", new String[]{String.valueOf(itemClass.getId())});
}

public static DataBaseHelper getInstance(){
    return  dbHelper;
}

}

当我尝试使用

在我的其他类中调用UpdateDataBase()方法时
DataBaseHelper.getInstance().UpDateDataBase(new ItemClass());

它告诉我,我正在引用一个null对象。如何引用该类的相同实例?

谢谢。

尝试在空对象引用上调用虚方法'void demoapp.app.android.sqlitedatabaseapplication.DataBaseHelper.UpDateDataBase(demoapp.app.android.sqlitedatabaseapplication.ItemClass)'

2 个答案:

答案 0 :(得分:2)

您需要使您的DatabaseHelper类成为单例。单例是一种设计模式,它将类的实例化限制为单个对象。 Alex Lockwood写了一篇关于数据库的非常简单且解释清楚的文章:http://www.androiddesignpatterns.com/2012/05/correctly-managing-your-sqlite-database.html

此外,在Java中,类方法名称以小写字母开头是一种约定:updateDatabase而不是UpdateDatabase Camelcase包括在字符串中的新单词的开头放置一个超大写字母,不带空格:updateDatabase而不是UpDateDataBase

答案 1 :(得分:0)

来自活动

DatabaseHelper databaseHelper=new DatabaseHelper(Your Activity Context)
databaseHelper.methodName();
在DatabaseHelper中

创建一个构造函数

public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

我希望这会对你有所帮助