【问题标题】:How to create multiple instances of an activity? - revisited如何创建一个活动的多个实例? - 重新审视
【发布时间】:2011-01-24 15:45:20
【问题描述】:

我想使用不同的参数启动同一个(ExpandbleList-)activity 的多个实例,因此列表中加载了不同的数据。这些列表位于TabActivity 的不同选项卡中。

到目前为止,它可以工作,但是当我更新一个列表中的信息,然后返回到第二个列表并单击其中一项(或更改屏幕方向)时,该列表将重新填充另一个列表中的数据。

我怎样才能开始活动,以免它们相互干扰数据?

【问题讨论】:

  • 附言。每次使用包含列表内容的数组时,我可能会检查启动时给出了哪个参数,但这似乎不是最好的方法。

标签: android android-activity expandablelistview multiple-instances tabactivity


【解决方案1】:

默认情况下,每个 Activity 都是一个新实例。 您是否不小心在此 Activity 的清单中设置了“单顶”? 您是否在 Activity 中设置了不应该是静态的静态(所以,共享)成员? 您如何实例化“不同”活动的个性;通过为 Intent 提供 Extras?

【讨论】:

  • 所以,我没有在 Manifest 中设置单顶,但我的 Activity 中确实有一些静态成员(包括带有列表项的数组和用于获取不同数据的请求代码活动)。我现在已经更改了这些,因此它们不再是静态的,并且我的 ExpandableListViewAdapter 现在获得了它自己的数组副本。此外,我确保每种使用类型的请求代码都不同(这样他们就不会意外地抓取彼此的结果)。现在它起作用了!所以非常感谢!附:是的,我使用附加功能来实例化不同的“个性”。
【解决方案2】:

Activity 不会是一个新实例,这就是为什么它们有 resume 和 pause 方法。我试图从广播接收器启动的服务中启动一个新的 Intent。与 Main/UI 线程完全不同的线程。除非用户已经运行过,否则工作正常,然后即使使用标志 Intent.FLAG_ACTIVITY_NEW_TASK 也尝试创建新 Intent 时出现以下错误。 android.view.ViewRoot$CalledFromWrongThreadException: 只有创建视图层次结构的原始线程才能触摸其视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    • 2023-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多