【问题标题】:Access Activity in a static way以静态方式访问 Activity
【发布时间】:2011-04-15 13:58:22
【问题描述】:

我有一个活动,它有一个用于更新textfield 的静态方法。这样我就可以从另一个活动中更新这个视图。

但现在我试图在这个静态方法中获取一个 Context 变量,这是不可能的。我试过声明一个 Context 变量并在onCreate ( context = getApplicationContext();) 中初始化它

但我仍然无法在此静态方法中访问上下文。这通常是怎么做的?

编辑:关于我的情况的更多信息。我在一个活动(a)中开始一个countdowntimer,它更新另一个活动的(b)``文本字段每秒。它通过以静态方式访问 b 的setTextField 来做到这一点..

【问题讨论】:

    标签: android android-context


    【解决方案1】:

    这通常是怎么做的?

    通过静态方法访问TextView 并不是从另一个活动更新字段的最佳方式。如果您想在活动启动时将值传递给活动,您可以通过意图发送数据(即intent.getExtras)。如果你想从子活动传回数据,你可以使用startActivityForResult

    【讨论】:

      【解决方案2】:

      你走的路很奇怪。您为什么要尝试将一项活动内容从另一项更改?可能您需要使用startActivityForResult 对新活动进行分层,然后从中返回结果并根据它更改视图?

      【讨论】:

        【解决方案3】:

        您可能想查看一些关于 OO 和使用静态函数的文档。这不是一个很好的方法。

        但由于我们不是在谈论更好的完整解决方案:您可以向函数添加带有上下文的参数,并在调用函数时给出它:)

        【讨论】:

          【解决方案4】:

          【讨论】:

            【解决方案5】:

            你能做这样的事情吗?

            类似<viewobj>.getContext()

            参考:How can I start an Activity from a non-Activity class?

            【讨论】:

              【解决方案6】:

              每当您忙于 Activity A 时,更新 Activity B 上的某些内容是没有意义的,因为它根本不会在那个时间点向用户显示。

              在我看来,您需要在这里有某种全局变量,可以在 Activity B 的 onResume 中获取。

              检查这个问题:How to declare global variables in Android?

              它向您展示了如何使用 Application 类来维护全局应用程序状态,可在需要时从所有活动中访问。

              【讨论】:

                猜你喜欢
                • 2014-04-12
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2010-12-20
                • 1970-01-01
                • 2012-09-14
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多