我想設置一個不擴展Activity類的幫助類。我如何得到一個包含getPackageManager()
的packagemanager對象。我怎樣才能做到這一點?如果我不在Android/Java中擴展活動類,如何獲得packagemanager對象?
爲什麼我需要這個?那麼我想安裝這個助手類,我試圖用我的助手類擴展Activity
。不過,由於我的幫助對象爲null,我總是得到一個nullpointerexceptions。
任何提示?
我想設置一個不擴展Activity類的幫助類。我如何得到一個包含getPackageManager()
的packagemanager對象。我怎樣才能做到這一點?如果我不在Android/Java中擴展活動類,如何獲得packagemanager對象?
爲什麼我需要這個?那麼我想安裝這個助手類,我試圖用我的助手類擴展Activity
。不過,由於我的幫助對象爲null,我總是得到一個nullpointerexceptions。
任何提示?
通常,最好的方式來做你想做的事情,將Context
傳遞給你的新類的構造函數。這樣你就可以用它來調用屬於Activity
的方法。
下面是一個例子,它應該幫助你鍛鍊你的問題:
new HelperClass(this);
雖然:
private Context context;
// ...
public HelperClass(Context c){
context = c;
}
// ...
context.getPackageManager();
然後,您可以只需添加你的背景下,當你初始化新類調用它在某些情況下,如來自片段,您可能需要提供getActivity();
。
new HelperClass(getActivity());
請嘗試編輯您的班級,如上所示,讓我們知道,如果你看到任何改進。
正如在評論中提到的,除非你打算使用你的上下文來編輯視圖等,你最好在你的構造函數中使用context = c.getApplicationContext();
。
你可以發佈你使用的代碼嗎? – whitfin
您可能會在活動上下文中實例化此Helper類,爲什麼不將'getPackageManager()'返回傳遞給Helper構造函數或甚至當前活動的this呢? – Voicu
@Voicu這可能是一個想法,通過上下文而不是回報,因爲它可能需要再次從這種情況除外 – whitfin