2013-04-22 3 views
1

Я использовал холст для рисования некоторых растровых изображений. Здесь все прекрасно, я использовал расширение класса и использовал конструктор super (context, attributeset); Теперь я хочу использовать методы из другого класса, но как заставить это работать, насколько я знаю, что класс, расширяющий представление, нуждается в этих двух конструкторах, они должны быть настроены на работу с андроидом (я попытался изменить его, и он говорит мне что для этого необходим такой конструктор, потому что он расширяется).Вызов методов (с использованием конструктора) из расширенного вида класса

Это мой код:

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; 
} 

EDIT:

Я нашел решение для всех, с той же проблемой. Просто создать объект в классе-например: простирающуюся класс: // выше конструктор объекта возвещайте от другого класса

private OtherClass otherclass; 

// и его конструктора вы просто создать новый объект

this.otherclass = new OtherClass(); 
+0

Теперь я хочу использовать методы из другого класса, но, как заставить это работать, можете ли вы быть более конкретным? – Triode

+0

@Triode Я хочу использовать, например, метод getMapSize, который находится при загрузке класса. Чтобы использовать его, мне нужна загрузка конструктора, но GameBoard уже получил конструктор fix, потому что он расширяется. – G4meM0ment

ответ

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

Попробуйте создать объект GameBoard не из XML-макета, а в коде, а затем добавьте его в свой макет. В этом случае вы можете создать свой конструктор и передать нужные вам объекты. Вы можете создать FrameLayout в xml, а затем добавить свое представление к этому макету. не

+0

Можете ли вы привести мне пример, я еще не добавил никаких комментариев из кода. И не знаю, почему мне разрешено, чтобы он оставил конструктора, он все еще расширяет представление, не так ли? – G4meM0ment

+0

и он не даст мне ссылку на загрузку ... – G4meM0ment

+0

Я создал простое приложение, где я передал объект String to View в конструкторе, поэтому я изменил конструктор моего представления. http://db.tt/SGF9Juf1 – Aram

Смежные вопросы