【问题标题】:Enable a button android from a different Activity从不同的 Activity 启用按钮 android
【发布时间】:2012-05-22 08:35:16
【问题描述】:

在我的代码中,activity 'A' 中有一个禁用按钮 我可以从activity 'B' 启用activity 'A' 上的那个按钮吗?

谢谢。

【问题讨论】:

  • 您能否更具体地说明一下是什么情况以及您要做什么?
  • 问题不清楚..请详细说明,以便您得到正确的解决方案。
  • 是的,对不起。我更好地解释了我的问题。我有一个主屏幕“A”,它有一个按钮,从“A”调用“B”,这是一个配置屏幕。我希望当'B'完成时,按钮被启用。这是通过意图完成的?怎么样?
  • 我建议查看docs 中的 startActivityForResult(),也许这可以为发布更具体的问题提供一些灵感。

标签: android button android-activity


【解决方案1】:

通常情况下,你不能。

如果您从活动 B 调用活动 A,那么您可以通过意图传递有关是否启用按钮的信息。

如果 A 调用 B 并且您需要根据用户在 B 中的操作在 A 中执行某些操作,那么您可以使用 startActivityForResult 调用 B 并将结果从 B 发送回 A;然后在您的活动 A 的onActivityResult 中,您可以根据 B 传回的内容启用/禁用按钮。

【讨论】:

  • 我有一个主屏幕“A”,它有一个按钮,从“A”调用“B”,这是一个配置屏幕。我希望当'B'完成时,按钮被启用。这是通过意图完成的?怎么样?
  • 您所描述的是我在上一段中描述的场景。这是一个直截了当的startActivityForResult/onActivityResult 组合。查看developer.android.com/resources/faq/…,特别是标题为“从屏幕返回结果”的小节
【解决方案2】:

使用一个Global class 并声明static boolean flag 变量

set flag value任意设置按钮的属性btn.setEnabled(Global.flag);

【讨论】:

  • 首先,使用全局静态变量通常不是一个好主意。这通常是糟糕设计的标志。其次,这不会达到预期的结果,因为设置标志不会触发任何代码来启用/禁用按钮。如果您只是设置一个标志,那么按钮将在何处/在什么点/在哪个线程或活动中启用或禁用?
  • 正如 Aleks G 上面所说,全局变量不是一个好的设计(无论如何对于大多数情况)如果您有一种机制可以在 startActivityForResult 和意图之间的活动之间传递信息,为什么要依赖全局变量?此外,您没有提出一种方法来触发会更改变量值的操作以及检查变量以将其传播到按钮的操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
  • 1970-01-01
相关资源
最近更新 更多