【问题标题】:How to share an sqlite data source between an Activity and FragmentActivity?如何在 Activity 和 FragmentActivity 之间共享 sqlite 数据源?
【发布时间】:2012-11-24 00:40:29
【问题描述】:

我使用 Eclipse 创建主详细信息流,现在想在主详细信息流中的列表活动(FragmentActivity 类型)和我创建的另一个活动(Activity 类型)之间使用 sqlite 数据源.

我做了一些阅读,为了只有一个 sqlite 数据源实例,人们建议创建一个基本活动(Activity 类型,包含数据源),然后将其扩展到所有其他活动。这样我就可以从超类中获取资源...这一切都很好,但是我不能在主详细信息流的列表活动中扩展基本活动,因为它扩展了FragmentActivity 而不是Activity...

有什么建议吗?

【问题讨论】:

  • 我会使用自己的 Application 类而不是基础活动...
  • android noob here...你能详细说明一下吗?我如何从Activity 和FragmentActivity 获得对我的Application 的引用?

标签: android sqlite android-fragments android-activity listactivity


【解决方案1】:

我认为 WarrenFaith 在他的评论中建议的是扩展 Application 类,这样您就可以维护一个全局 static 对象,该对象可以从您应用的任何组件中访问。

示例...

public class MyApp extends Application {

    public static MyObject obj = null;

    public void onCreate() {

        obj = new MyObject();
        ...
    }

    ...
}

然后您可以从您的Activity 或您的FragmentActivity 访问该对象,如下所示...

MyApp.obj.someMethod();

【讨论】:

  • 由于 Application 类只会被实例化一次,您应该考虑将其设为单例。
  • @WarrenFaith :同意,但我不想用单例的概念使问题复杂化,尽管我确实考虑过提及它。我的示例只是实现所需效果的一个简单起点(我在第一次开始使用 Android 时学到的)。
【解决方案2】:

不确定这是否会有所帮助,但我还是会在这里分享一些我所做的事情,也许会有所帮助。

在使用 Fragment 时,我使用 Fragment 上的 getActivity() 传递到我的 SQLite DS 对象。这将返回片段关联的 Activity。

在 FragmentActivity 上,我看到一个名为 getParent() 的方法,它根据 FragmentActivity 的使用方式返回父 Activity。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    相关资源
    最近更新 更多