2009-10-09 97 views
11

我運行在一個活動下面的行,這是在同一應用程序內,但在不同的包:的Android:this.getApplication()返回NULL指針

AppObject appObj = (AppObject)this.getApplication(); 
// FYI: AppObject is my extension class of Application. 

它僅返回一個空指針,而當我將它移動到「主」包並從那裏運行時,它會按照預期返回應用程序參考。

我已經定義了活動在我的AndroidManifest.xml與全限定類名,因爲它是在另一個包:<activity android:name="com.foo.bar.TestActivity"></activity>

的什麼我已經做不同的任何想法?

感謝


更新:正如下面android:name="AppObject"問題建議已經在的AndroidManifest.xml中

回答

4

您需要更新應用程序標籤的AndroidManifest.xml與<application>標籤您類名,這是從應用程序擴展,具有適當的包名稱。

<application android:name=".AppObject"> 


應用標籤谷歌文檔,對於那些誰需要保持全球應用程序狀態基類。你可以通過在你的AndroidManifest.xml標籤中指定它的名字來提供你自己的實現,當你的應用程序/包的進程被創建時,這會導致爲你實例化這個類。

here

+1

對不起,我忘了在我的問題中提到。但是我已經在我的Manifest中擁有過。 – znq 2009-10-15 09:32:10

1

正好碰上了同樣的事情,已經重構我的代碼仍然得到了同樣的問題,發現我設置了本地mApplication變量在構造函數,它應該在onCreate(),我想在建立getApplication()之前,可以先建立清單中的所有對象,因此您需要在調用onCreate()或之後調用getApplication()。沒有重構我所有的代碼,看看它是否適用於不同的包(嘆氣)。

20

在活動的onCreate()方法中調用getApllication()非常重要,而不是在構造函數中。

+0

非常重要的一點,在文檔中沒有提到。非常感謝! – Stan 2012-12-23 22:48:05

+0

有趣的是,這個在onCreate之前調用getApplication似乎適用於三星galaxy note 3上的同事,但在我的nexus 5上,我看到了崩潰。 – Sam 2015-04-03 11:20:34

+0

非常感謝!我已經處於絕望的狀態,因爲我試圖在SharedPreferences上進行嘗試的方式都有NullPointerException。這爲我解決了它!謝謝! – 2015-07-14 10:10:20

-1

我認爲,這不是一個null指針,但您想在類AppObject中使用的函數可能是錯誤的。

+0

請解釋。你爲什麼這麼認爲? – naXa 2014-05-15 14:05:11

+0

我遇到你的錯誤一次,當我檢查代碼,並找到這個原因,我是新來這個領域,並希望這會對你有所幫助。 – user3641050 2014-06-27 02:15:42