簡體   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