【问题标题】:Update View with updated data in Android使用 Android 中的更新数据更新视图
【发布时间】:2014-04-14 14:35:39
【问题描述】:

我是 Android 的菜鸟。假设我的 android 应用程序中有两个 Activity

Activity A 和 B,目前我在 Activity A 然后单击一个按钮我现在是 Activity B。在这里,从活动 B 我想用活动 A 中的更新数据更新一些视图。我在活动 B 中获得了更新的数据,所以我应该在这里使用 LocalBroadCastReceiver 吗?这样当我按下后,应用程序应该在 Activity A 中显示更新的数据

我们是否应该在这里使用我们的自定义回调来从 Activity B 更新 Activity A 的 UI 视图数据??

【问题讨论】:

  • 您使用的是哪种类型的视图?您要显示什么类型的数据,以及正在更新什么类型的数据
  • 像任何TextView 和我在活动 B 中获得的任何文本数据一样
  • 你是否将这些数据存储在某个地方?

标签: android


【解决方案1】:

不,您不应该为此使用 BroadcastReceiver。该方法取决于您要从Activity B 传输到Activity A 的数据大小。如果它非常小,您可以使用startActivityForResult 开始Activity B,然后在onActivityResult 方法中获取数据(在Activity B 中,您应该在完成后使用setResult)。如果数据量很大,最好使用DB来存储而不是保存在内存中。

【讨论】:

  • 如果我有四个活动 A->B->C->D 那么我在 D 中获取更新的数据然后想在 A 的 TextView 中设置该数据。那么我应该使用 @ 987654330@?
  • @Mick 在这种情况下你绝对应该使用DB。你可以级联startActivityForResult,但我觉得这很奇怪。
  • 假设我只从 D 中的 web api 得到一个词,那么我应该使用 DB,这怎么可能是个好方法,我不认为在这里使用 DB
  • @Mick 好吧,对于这么小的数据,您可以使用SharedPreferences
  • 为什么这里使用 LocalBroadCastReceiver 不是一个好习惯?
【解决方案2】:

好的,有多种方法可以做到:-

  1. 您可以使用静态变量来存储应用程序级别的数据(可能不是一个好方法)检查​​ onResume() 中的 vairable 的值并将其设置到视图。
  2. 如果您的数据不是很大,您可以使用 sharedpreferences,将数据存储在 Activity B 中,然后在 Activity A 的 onResume() 方法中获取它。
  3. 正如@nikis 告诉你的那样
  4. 如果您的数据太大,请将其存储在 db 中。

我认为广播接收器不适合您的场景!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多