我有一些类(SomeClass.class).我想在其中有一些静态方法,如getAllDatabaseItems,getTableItems,insertNewRecord等.
如果我这样做的话
SQLiteDatabase db = openOrCreateDatabase(DATABASE_NAME, MODE_PRIVATE, null);
Run Code Online (Sandbox Code Playgroud)
什么是解决方案,所以我可以从一些类调用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);");
}
Run Code Online (Sandbox Code Playgroud)
然后从我的一些活动中调用它
Partner newPartner = new Partner(this);
partnersItems = newPartner.getAllItems();
Run Code Online (Sandbox Code Playgroud)
我在第4行得到NullExceptionError(Partner.class) - 为什么?如果我使用静态参考
MODE_PRIVATE => (Context.MODE_PRIVATE)
Run Code Online (Sandbox Code Playgroud)
再次它不起作用.
@Falmarri与static相同,如果我传入"this"参数(来自某个调用者类)并在静态方法中将其作为Context参数接收仍然无法成功创建/打开我的数据库(请参阅前面的行)
必须有一项活动或服务调用您的班级,您所能做的就是this在您方便的时间通过。(我更喜欢在构造函数中传递它)。
在接收手时使用上下文即时。
例如,MyActivity您可以在类中调用createDatabase(this)ornew DataServices(this)但在DataServices类中参数类型必须context而不是MyActivity。
现在您有了上下文参数,您可以按照您想要的方式使用它,包括调用openOrCreateDatabase().
编辑:添加代码
来自Main.java
写
DataBase database = new DataBase(this); //This will pass an instance of main. Which is eventually the subclass of Context.java
Run Code Online (Sandbox Code Playgroud)
在 DataBase 类中:您不需要在那里扩展活动。在构造函数定义中
public DataBase(Context context);
//如果您使用 eclipse 并依赖一些自动化工具,您可以看到类似 Main main 的内容。但是使用这些行,这样您就可以通过传递它从任何活动或服务中调用它。
定义 Context 类的一个字段,并将其引用到 context arg。
喜欢this.localContext= context;
通过使用 localContext 变量,您可以调用 openOrCreateDataBase 列。
添加:如果您有任何附加到此的控件(视图的子类),您可以通过调用实例化DataBasenew DataBase(view.getContext());
我希望这会对您有所帮助......如果需要更多帮助,请随时在下面发表评论。
| 归档时间: |
|
| 查看次数: |
6044 次 |
| 最近记录: |