1

我一直在試驗擴展應用程序作爲獲取應用程序上下文對象的快速方法。我有一個類,像這樣:擴展Android應用程序時的空指針

public class PageMonitorApplication extends Application 
{ 
    @Override 
    public Context getApplicationContext() 
    { 
     return super.getApplicationContext(); 
    } 
} 

我的清單包括:

<application android:icon="@drawable/icon" android:label="@string/app_name" android:name=".PageMonitorApplication"> 

然而,創建的PageMonitorActivity的實例並調用getApplicationContext()當我得到一個空指針異常。在eclipse中調試並檢查PageMonitorActivity的實例時,我可以看到base=null

任何人都可以建議什麼是錯的?

回答

1

super.getApplicationContext()正在恢復null因爲PageMonitorApplication應用程序上下文。你應該檢查是否getApplicationContext返回null,如果是這樣,只需使用你已經有的Context

爲了得到一個參考PageMonitorApplication,在調用getApplicationContext當前ActivityService(或其他Context你可能有)。

+0

我沒有得到這個...所以在getApplicationContext()我可以只返回_this_? – barry

+0

不,重點是'PageMonitorApplication' _is_應用程序上下文。你根本不需要這種方法。 – Brigham

+0

但是如果我在PageMonitorApplication的一個實例上調用一個Context方法,我得到一個空指針。例如。上下文context = new PageMonitorApplication(); context.getDatabasePath( 「MY_DB」);導致一個空指針。 – barry

0

內的任何活動,您可以直接訪問使用getApplicationContext的ApllicationContext對象()。沒有需要創建和使用應用程序類實驗。

+0

我希望能夠輕鬆訪問Activity的外部**的ApplicationContext **。 – barry

+0

你想在活動之外使用ApplicationContext做什麼? – josephus

+0

@JosephusVillarey即使他需要在外面,他也可以發送getApplicationContext()作爲參數,並將它作爲上下文參數隨意接收。不是嗎? –