【问题标题】:How to show a dialog in an Android app without knowing of the current activity如何在不知道当前活动的情况下在 Android 应用程序中显示对话框
【发布时间】:2012-06-24 08:12:02
【问题描述】:

每当我的应用收到来自 android 平台的某种通知时,显示对话框的最佳方式是什么?例如,方向或设备语言发生变化等。

我面临的挑战是我不知道如何获取当前活动上下文,因此很难使用 AlertDialog。

另外,我只想在应用程序在前台运行时显示此对话框,所以我的第二个问题是是否有可靠的方法来检测应用程序是否在前台运行?

谢谢!

【问题讨论】:

  • 我不知道如何获取当前活动上下文 - Activity 扩展 Context 因此任何 Activity IS a @ 987654327@,当您需要将Context 传递给任何东西(包括创建AlertDialog 时)时,您可以简单地使用this
  • 我知道每一个activity都是一个context,但是反之则不然,所以我不知道当前哪个activity在前台,那么当我创建AlertDialog的时候,我就不知道了我应该通过哪个活动。
  • 观察者/监听者可以做这样的事情,每个活动的活动只是在你的应用程序中注册它自己的Callback Method。编辑:better explanation of the concept
  • 如果你真的想获取当前Activity,可以use this solution。当然,它可能不是你的

标签: android android-activity android-dialog


【解决方案1】:

您应该使用BroadCastReceiver。 Mark Murphy 在下面的帖子中描述了如何做到这一点:

How can I display a dialog from an Android broadcast receiver?

【讨论】:

  • 谢谢,但我的应用程序有许多活动,这些活动可能派生自或可能不派生自同一个基活动类,我认为每个 Mark 的示例都应该使用广播接收器,因此制作起来可能有点复杂确保每个活动都可以正确显示对话框或推送通知。
  • 也许您可以创建一个abstract class BaseActivity extends Activity 并在您的项目extend BaseActivity 中拥有所有相关活动?或类似的东西?这样您就可以在BaseActivity 类中实现通知/对话框功能并让活动继承此行为?
  • 是的,我不能让所有活动都扩展基本活动是有原因的,这对我来说是困难的部分:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多