我正在使用android和ormlite。我在初始化ForeignCollection
时遇到问题。
我找到了这个,初始化它:dao.getEmptyForeignCollection()
但是对于dao,我需要DatabaseHelper
,而对于databasehelper,我需要applicationContext,但在实体中我没有上下文。还有其他选择吗?
这是Code,它是一个1:n的关系。班组:
@DatabaseField(canBeNull = true, foreign = true)
private Club club;
班级俱乐部:
@DatabaseField(canBeNull = true, foreign = true)
private ForeignCollection<Team> teams;
感谢您的帮助
答案 0 :(得分:2)
您的问题不是关于外国馆藏,而是关于ORMLite如何在Android下连线。所有这些都在文档中解释:
你特别问:
但是对于dao,我需要
DatabaseHelper
,对于数据库助手,我需要应用程序Context
,但在实体中我没有上下文。还有其他选择吗?
在Android下,每个扩展Activity
,ListActivity
,Service
和TabActivity
的类都是Context
。您可以从online docs:
java.lang.Object
↳ android.content.Context
↳ android.content.ContextWrapper
↳ android.view.ContextThemeWrapper
↳ android.app.Activity
如果您查看网站上提供的Android example项目,您可以看到Android应用程序的连线情况:
您的主Activity
延伸OrmLiteBaseActivity
public class HelloAndroid extends OrmLiteBaseActivity<DatabaseHelper> {
onCreate
中的OrmLiteBaseActivity
方法使用ORMLite DatabaseHelper
和OpenHelperManager
构建您的Context
:
OpenHelperManager.getHelper(this.getApplicationContext());
使用OrmLiteBaseActivity.getHelper()
方法来访问帮助程序以创建DAO,以便您可以将内容保存到数据库中。
答案 1 :(得分:1)
您需要注入所需的依赖项。
如果您的实体需要数据库助手,请提供它。 如果您的数据库帮助程序需要上下文,请提供它。
为您的类提供构造函数,使所需的依赖项成为必需:
public DataHelper( Context context ) {
this.context = context;
}
然后,从您的活动或应用程序模型中,使用
new DataHelper( this );
注入依赖项。
先验一下,使用一个为数据库帮助程序提供一般上下文的应用程序类会更有意思,而不是为其onCreate方法中的每个活动创建一个新的数据库帮助程序。