我有一个类 (SomeClass.class),我想在其中添加一些静态方法,例如 getAllDatabaseItems、getTableItems、insertNewRecord 等等。
如果我这样做:
如果我这样做:
SQLiteDatabase db = openOrCreateDatabase(DATABASE_NAME, MODE_PRIVATE, null);
- 我需要扩展Activity(但仍然不能在静态方法中使用它),或者在每个方法中传递一个“db”变量(从“调用活动”中),这相当冗长。
那么我可以从某个类中调用SomeClass.getAllDatabaseItems()吗?
@MobileDev123 那我是否仍然需要扩展Activity(因为有openOrCreateDatabase方法)? 如果我有这个类(实际上不是活动,我不会这样使用它)
public class Partner extends Activity {
@SuppressWarnings("static-access")
public Partner(Context mContext) {
myContext = mContext;
db = openOrCreateDatabase(DATABASE_NAME, myContext.MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS " + PARTNER_TABLE_NAME + " (id INTEGER PRIMARY KEY AUTOINCREMENT, " + NAME + " VARCHAR);");
db.execSQL("CREATE TABLE IF NOT EXISTS " + ADDRESS_TABLE_NAME + " (id INTEGER PRIMARY KEY AUTOINCREMENT, " + PARTNER_ID + " INT, " + ADDRESS + " VARCHAR, " + CITY + " VARCHAR);");
}
然后在我的一些活动中像这样调用它
Partner newPartner = new Partner(this);
partnersItems = newPartner.getAllItems();
我在第4行(Partner.class)遇到了一个空指针异常错误 - 为什么?如果我使用静态引用
MODE_PRIVATE => (Context.MODE_PRIVATE)
再次出现问题。
@Falmarri 如果我在静态方法中传入“this”参数(来自某个调用类),并将其作为Context参数接收,仍然无法成功创建/打开我的数据库(请参见前面的行)。
activity-->A-->B--->您的类
)...在这种情况下,您必须将context
传递给所有类。如果您的类具有任何视图控件,可以使用View.getContext()获取它们。 - Prasham