2013-10-30 34 views
-1

有一個名爲utils的類:新到Android:爲什麼必須類擴展活動通過它的上下文

public class Utils{ } 

還有一種叫HotOrNot類。它包含了這樣的構造:

public HotOrNot(Context c){ ourContext =c ;} 

在utils的課,我要開始HotOrNot的一個實例,所以我輸入:

HotOrNot info = new HotOrNot(this); 

但是,這個代碼給我下面的錯誤:

public class Utils extends Activity { } 

The constructor HotOrNot(Utils) is undefined

我通過擴展utils的階級是這樣解決了這個錯誤

爲什麼必須Utils擴展活動才能傳遞其上下文HotOrNot的構造函數?

+2

因爲Activity擴展類Context和Utils不是 – Blackbelt

+1

你的問題沒有多大意義。假設HotOrNot是一輛Car,其構造函數需要一個Driver。您無法將Apple傳遞給Car的構造函數,因爲Apple不是Driver。當然,你可以讓蘋果擴展驅動程序,假裝它是一個驅動程序,並能夠將它傳遞給汽車構造函數。但是,雖然它會編譯,我懷疑它有用。 –

+0

您應該可以通過Java教程。只要擴展'Activity'就可以解決編譯錯誤,但它不起作用。 – Henry

回答

1

HotOrNot的構造函數需要一個Context(通常這將是您的主要活動)。 所以只是路過this中的Util類不會代替你的Utils類擴展Activity的工作(因爲它不是Context一個子類) ,你應該以某種方式傳遞引用您Activity到utils的,所以你可以在那裏使用它。

+0

如何傳遞引用到活動,你建議? –

+0

@lisagreen'new Utils(ActivityName.this)'then Utils class'COntext mCOntext;'然後'public Utils(Context context){mCOntext = context;}' – Raghunandan

+0

@lisagreen現在使用mCOntext作爲新的HotOrNot(mContext); – Raghunandan

相關問題