2012-04-11 87 views
4

我正在使用android和ormlite。我有一个初始化ForeignCollection的问题。我在哪里可以找到初始化ORMLite所需的ApplicationContext?

我发现这一点,将其初始化:dao.getEmptyForeignCollection()

但对于道,我需要的DatabaseHelper,并为databasehelper我需要一个ApplicationContext,但在实体我有没有背景。有没有其他的选择?

这是Code,它是1:n的关系。一流的团队:

@DatabaseField(canBeNull = true, foreign = true) 
private Club club; 

类俱乐部:

@DatabaseField(canBeNull = true, foreign = true) 
private ForeignCollection<Team> teams; 

感谢您的帮助

回答

2

你的问题不是关于外国收藏,而是关于如何在Android下连接ORMLite。所有这一切都在文档中进行了说明:

http://ormlite.com/docs/android

您特意问:

但对于道,我需要的DatabaseHelper,并为数据库助手,我需要的应用程序Context,但在实体中我没有上下文。有没有其他的选择?

在机器人,每个延伸ActivityListActivityService类,和TabActivityContext。你可以看到从online docs类层次:

java.lang.Object 
    ↳ android.content.Context 
     ↳ android.content.ContextWrapper 
      ↳ android.view.ContextThemeWrapper 
       ↳ android.app.Activity 

如果你看看可从网站Android example项目,你可以看到一个Android应用程序通常是如何连线:

  • 你的主要ActivityOrmLiteBaseActivity延伸

    public class HelloAndroid extends OrmLiteBaseActivity<DatabaseHelper> { 
    
  • onCreate该方法在OrmLiteBaseActivity使用ORMLite OpenHelperManager和本身作为Context构建您的DatabaseHelper

    OpenHelperManager.getHelper(this.getApplicationContext()); 
    
  • 您使用OrmLiteBaseActivity.getHelper()方法来获得访问助手来创建你的DAO所以你可以坚持的东西到数据库中。

1

你需要注入所需的依赖关系。

如果您的实体需要数据库帮助器,请给它。 如果您的数据库帮助程序需要上下文,请给它。

提供构造你的类,进行必要的依赖强制性的:

public DataHelper(Context context) { 
    this.context = context; 
} 

然后,从活动或应用模式,使用

new DataHelper(this); 

注入的依赖。

先验地说,使用应用程序类将为您的数据库帮助程序提供一个通用上下文,而不是为其onCreate方法中的每个活动创建一个新的数据库帮助程序。

+1

你的意思是这样的[链接](http://stackoverflow.com/questions/987072/using-application-context-everywhere)。 或更多类似这样的内容 'public Club(Context context,String name){ \t this.name = name; }' – Flow 2012-04-11 11:05:30

+0

正是那:)快乐编码。 – Snicolas 2012-04-11 11:06:03

+0

感谢您的帮助 – Flow 2012-04-11 11:11:17