2013-04-22 52 views
1

我使用畫布繪製了一些位圖。這裏的一切都很好,我使用了類擴展視圖並使用了構造函數super(context,attributeset); 現在我想使用另一個類的方法,但如何讓這個工作,據我所知視圖擴展類需要這兩個構造函數,他們必須設置爲與Android(我試圖改變它,它告訴我它需要這樣的構造函數,因爲它擴展了視圖)。從延伸視圖的類調用方法(使用構造函數)

這是我的代碼:

public class GameBoard extends View{ 

    private static final String tag = "GameBoard"; 

    private Paint p; 
    private Load load; 

    public GameBoard(Context context, Load load) { 

      super(context); 
      p = new Paint(); 
      this.load = load; 

//還有很多更在這一類,但在這裏犯規事項。

 } 

而這是其他類:

public class Load{ 

Context context; 

// TODO從文件加載這些相關信息,使紋理適合與手機屏幕尺寸 INT MSIZE = 99; int tSize = 48; int screenCoords = 160; int rectX = 10; int rectY = 16;

String coordsFileName ="coordsData.txt"; 

public Load (Context context) { 
    this.context = context; 
} 

編輯:

我發現了同樣的問題,爲大家解決方案。 在例如擴展的類只需創建一個對象: 擴展類: //上述構造申報對象關閉其他類

private OtherClass otherclass; 

//並在其構造器,你只需創建一個新的對象

this.otherclass = new OtherClass(); 
+0

現在我想用方法從另一個類,但如何得到這個工作,你可以更具體一點? – Triode 2013-04-22 09:50:35

+0

@Triode我想用於例如位於類加載的getMapSize方法。爲了使用它,我需要一個構造函數來承擔負載,但是GameBoard已經得到了一個修復構造函數,因爲它延伸了視圖。 – G4meM0ment 2013-04-22 15:38:36

回答

1

我已經沒有剛剛建立,我想,所以我並不需要它overgive給構造函數的類的一個新對象:

public class GameBoard extends View{ 

private static final String tag = "GameBoard"; 

private Paint p; 
private Load load; 

public GameBoard(Context context) { 

     super(context); 
     p = new Paint(); 
     load = new Load(); 
1

嘗試不是從XML佈局創建GameBoard對象,而是在代碼中,然後將其添加到佈局。在這種情況下,你可以創建你的構造函數並傳遞你需要的對象。您可以在xml中創建一個FrameLayout,然後將您的視圖添加到該佈局。

+0

可以舉個例子,我沒有添加任何代碼視圖。不知道爲什麼我允許然後離開建造者,它仍然延伸視圖不呢? – G4meM0ment 2013-04-22 14:02:36

+0

它不會給我一個參考加載... – G4meM0ment 2013-04-23 08:18:11

+0

我已經創建了一個簡單的應用程序,我已經在構造函數中傳遞一個字符串視圖對象,所以我修改了我的視圖的構造函數。 http://db.tt/SGF9Juf1 – Aram 2013-04-23 12:43:38