繁体   English   中英

不能使用公共静态方法?

[英]Can't use a public static method?

这很混乱。 我看一下NotificationManager类的Android 2.2.2_r1源代码 ,并且看到定义为publicstatic getService()方法。 但是,日食告诉我:

该行上的NotificationManager类型的getService()方法未定义

 Object o = NotificationManager.getService();

我的项目是针对Android 2.2 / API Level 8构建的。我尝试使用反射来查看方法名称和修饰符,并且确实,我回来了

public static getService

我在这里想念什么吗? 为什么日食会告诉我这种方法不存在?

您将在这篇文章中找到非常详细的答案。

简而言之:因为您是针对android.jar编译的,所以android.jar删除了所有隐藏方法(例如您尝试访问的方法)。 它们仅在运行时存在,供内部android使用。


但是既然您也许也需要它。 访问NotificationManager的正确方法是通过上下文的getSystemService方法:

NotificationManager nm = (NotificationManager)ctx.getSystemService(Context.NOTIFICATION_SERVICE);

context是有效上下文(例如您当前的活动)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM