2016-03-13 3 views
1

Привет, ребята, я новичок в Java и Android, и мне нужна ваша помощь. Мне нужно использовать метод внутри другого класса, но он не работает, он говорит, что он не может найти мои параметры canvas внутри моего метода onDraw в классе Game. Как я могу это исправить? Вот код для вас, чтобы лучше понять ситуацию:Используйте метод внутри другого класса Android

Это мой Draw класса, где метод OnDraw является:

public class Draw extends View { 
    public Draw(Context context) 
    { 
     super(context); 

    } 

    @Override 
    public void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

     Rect rect = new Rect(); 
     rect.set(0,0, canvas.getWidth(), canvas.getHeight()/2); 
     Paint blue = new Paint(); 
     blue.setColor(Color.BLUE); 
     blue.setStyle(Paint.Style.FILL); 
     canvas.drawRect(rect,blue); 
    } 

} 

А вот мой Game класса, где я хочу использовать метод OnDraw:

public class Game extends AppCompatActivity { 

    private Draw draw; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_game); 

     Canvas canvas; 
     draw.onDraw(canvas); 
    } 

} 
+0

Можете ли вы поделиться точную ошибку, пожалуйста? – Mureinik

+0

не может разрешить символ «холст» – Matnako

+0

Ваша нить и холст равны нулю. Вы должны сначала их инициализировать – OShiffer

ответ

2

Сделайте свой игры класса следующим образом:

public class Game extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(new Draw(this)); //change on this line 

    } 

} 
+0

Он работает, спасибо вам большое :) – Matnako

0

Когда ты хотите использовать другой класс, вы должны сначала создать новый объект из класса. как это для создания нового объекта из вашего класса:

public class Game extends AppCompatActivity { 

Draw my_draw; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_game); 

    //Generate new object from class 
    my_draw = new Draw(Game.this); 
    Canvas canvas; 
    my_draw.onDraw(canvas); 
} 
+0

Он работает только в том случае, если я инициализирую холст из метода onCreate, но он говорит о вызове подозрительного метода, и он не создает мой прямоугольник :( Что я могу сделать? – Matnako

+0

Я не знаю о вашем коде, но я написал базовый закон использования класса и его методов в другом классе –

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