2012-06-22 28 views
2

每当我的应用程序收到来自android平台的某种通知时,显示对话框的最佳方式是什么?例如,方向或设备语言得到改变,等等。如何在不知道当前活动的情况下在Android应用程序中显示对话框

对我的挑战是,我不知道如何获得当前活动上下文,因此很难用一个AlertDialog。

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

谢谢!

+1

**,我不知道如何获得当前活动上下文** - 'Activity'扩展'Context'因此任何'Activity' ** IS **是一个'Context',当你需要传递一个Context到任何东西(包括创建AlertDialog时),你可以简单地使用'this'。 – Squonk

+0

我知道每一个活动都是一个上下文,但另一种方式是不正确的,所以我不知道当前哪个活动在前台,那么当我创建AlertDialog时,我不知道应该通过哪个活动。 –

+0

观察者/监听器可以做这样的东西,每一个活跃的活动只是其注册自己的[回调方法(http://stackoverflow.com/questions/11156496/is-there-a-sendtoactivity-method/11156863#11156863)在你的应用程序。编辑:[更好的解释的概念](http://stackoverflow.com/questions/443708/callback-functions-in-java) – trichner

回答

1

你应该使用BroadCastReceiver。马克·墨菲介绍了如何在下面的帖子做到这一点:

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

+0

谢谢,但我的应用程序有许多活动,可能会或可能不会从相同的基本活动类派生,我认为应该按照Mark的示例使用broadcastReceiver,所以确保每个活动都可以显示对话框可能有点复杂或正确推送通知。 –

+0

也许你可以创建一个'抽象类BaseActivity extends Activity',并在你的项目中扩展所有相关的活动'扩展BaseActivity'?或类似的东西?这样你可以在'BaseActivity'类中实现通知/对话框功能,并让活动继承这种行为? –

+0

是啊,背后有一些原因,我不能让所有的活动扩展基本活动,这是我的难题:-) –

相关问题