2013-05-14 72 views
0

我有一個圖書館項目和一個項目,每個應用程序的免費和付費版本。在圖書館項目中,我有一個「基本活動」。這個「基本活動」必須根據其是免費還是付費版本開始兒童活動。這是一種奇怪的方式來創建一個意圖?

我所做的只是在我用startActivity()引發意圖之前,我調用了一個'Base Activity'中的方法,它必須返回意圖。我重寫我的「基本活動」的子類(付費和免費版本)這個方法,創建這樣的意圖:

return new Intent(subClassOfBaseActivity.this, ChildClassA.class); 

和:

return new Intent(subClassOfBaseActivity.this, ChildClassB.class); 

現在,我的問題是,它是確定通過傳遞subClassofBaseActivity.this而不是BaseActivity.this來創建意圖?

此方法總體上沒問題嗎?

回答

1

當你創建你需要通過ContextActivityIntent

現在,上下文是允許應用程序訪問某些資源的接口。

基本上你的情況,你傳遞一個上下文和活動,因爲它應該,但你問,如果你需要通過baseActivity作爲上下文。 所以基本上我認爲,因爲這條線在Android開發者的:

Interface to global information about an application environment你需要通過基地活動爲背景..

在另一邊,在子類可能是從基類繼承,因此上下文應該是相同的,但是當你傳遞baseClass作爲上下文時,它會更加可讀和清晰。

約上下文 http://developer.android.com/reference/android/content/Context.html

+0

因此,作爲danijoo建議使用getBaseContext()將得到更好的更多信息/更清晰? – Koded101

+0

我會建議使用baseClass.this而不是getBaseContext,你可以在這裏閱讀它http://stackoverflow.com/questions/1026973/android-whats-the-difference-between-the-various-methods-to-get-上下文 無論如何有一個方法稱爲getParent()這將返回父活動的上下文,如果當前視圖(活動)是父活動的孩子 – Elior

+0

@ Koded101檢查Android的源代碼我發現這個' Context'僅用於獲取應用程序包名稱,所以我假設您可以自由使用任何解決方案。我不認爲有建議的方式來將上下文傳遞給'Intent'構造函數,只是爲了創建Intent而使用你認爲它更清晰的方式。其實我通過傳遞'AnyActivity.this'沒有看到任何混淆的東西。 – andrew

1

那很好。 Java將把第一個參數投入到Context(Activity extends Context)中,所以它沒有關係。你也可以把getBaseContext()insteat Activity.this那裏..

相關問題