Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 片段上的SQLite初始化_Android_Sqlite_Android Fragments - Fatal编程技术网

Android 片段上的SQLite初始化

Android 片段上的SQLite初始化,android,sqlite,android-fragments,Android,Sqlite,Android Fragments,我只是阅读,因为我需要获取一个上下文来初始化数据库。使用Fragment#getActivity()获取Context或在Fragment#onAttach(Activity)回调方法中进行操作的两个得票最多的答案 问题是,为了维护一个有良好文档记录的代码,我希望避免使用“替代”方式,而是按照预期的方式进行操作 从这里找到的片段生命周期判断:似乎在onCreate之前调用了onatach(),这意味着getActivity()此时不应返回null 问题是: 它是用来初始化onAttach()中的

我只是阅读,因为我需要获取一个上下文来初始化数据库。使用
Fragment#getActivity()
获取
Context
或在
Fragment#onAttach(Activity)
回调方法中进行操作的两个得票最多的答案

问题是,为了维护一个有良好文档记录的代码,我希望避免使用“替代”方式,而是按照预期的方式进行操作

从这里找到的
片段
生命周期判断:似乎在
onCreate
之前调用了
onatach()
,这意味着
getActivity()
此时不应返回null

问题是:

  • 它是用来初始化
    onAttach()中的数据库的吗
  • onCreate()
    内部调用
    getActivity()
    时,即使已经调用了
    onAttach()
    getActivity()是否可能返回
    null

  • 似乎您最好在正确的时间创建一个待办事项设置。这使您可以通过内容解析器从任何地方轻松访问数据库。

    要初始化数据库,
    ApplicationContext
    就足够了

    您可以创建自己的应用程序子类,如下所示(您还必须在清单中定义它)

    然后,您可以在需要应用程序上下文的任何地方调用
    MyApp.context()

    在您的舱单中:

    <application android:name="MyApp"/>
    
    
    
    我真的不明白你为什么要这样做。从
    应用程序
    实例中调用
    getApplicationContext()
    基本上与使用
    this
    @Squonk完全相同。我可以在非从活动调用时使用这种方法,我可以在任何类中使用这种方法。或者您的意思是getApplicationContext与Application.this相同。我从来没有想过,getApplicationContext()似乎更明确。许多地方需要活动上下文,所以应用上下文没有用处。即使忽略这一点,创建一个静态方法来做事情也违反了OO原则,正如Squank所提到的,getApplicationContext()exists@Nick卡多佐,请你详细说明一下它是如何违反OO原则的好吗?@Alex:(继续说,跑出了房间)。另一个附带说明是,正如Nick所建议的,在某些情况下,您必须使用活动上下文(尽管正如您在回答中所说的,应用程序上下文对于DB内容是合适的)。您可能需要活动上下文的原因是应用程序上下文只是部分上下文,对于许多与UI相关的任务来说根本无法正常工作(应用程序没有UI,也不知道UI需要什么)。+1因为我喜欢使用CP。。。附加值也将是:CP与加载程序兼容,通过CP添加数据,您不必担心ListView刷新-它将自动完成:)创建ContentProvider可能是一件不必要的琐事。问题是关于上下文而不是ContentProvider。您解决了这个问题吗?您是否有更好的答案可以添加,或者您是否可以接受另一个答案来结束此问题并将其从未回答的android列表中删除,谢谢!是的,我最终使我的数据库成为一个
    Singletοn
    ,这样
    ViewPager
    中的每个片段都具有相同的连接。然后我在我的
    应用程序#onCreate()
    子类中初始化了它。您可以回答自己的问题-您应该做的只是整理未回答的列表
    <application android:name="MyApp"/>