почему invalidate () не может быть вызван извне объекта? - PullRequest
0 голосов
/ 18 марта 2019

Я реализую пользовательское представление в Android Studio, используя java. В процессе я должен обновить значение до пользовательского объекта, созданного из пользовательского представления. Я не могу это сделать. Вот мой пример кода: пользовательский вид ->

public class simpleclass extends View{
private simple_line line;

constructors[..
line=new simple_line(0);
];

public void update_line(float up_val){
line.set_xval=up_val;
}

onmeasuremethod[..];
@Override
protected void onDraw(Canvas canvas){line.draw_line(canvas); }

private class simple_line{
 private Paint mpaint;
 private float xval;

 public simple_line(float val){
 xval=val;
 mpaint=new Paint();
 mpaint.setStrokeWidth(10);
 mpaint.setStyle(Paint.Style.STROKE);
 mpaint.setColor(Color.BLUE);
 }

 public void set_xval(float val){
     this.xval=val;
     invalidate();
 }
 public float get_xval(){
     return xval;
 }
 public draw_line(Canvas canvas){
     Path mypath=new Path();
     mypath.moveTo(getwidth/2+xval,0);
     mypath.lineTo(getwidth/2+xval,getHeight);
     mypath.close();
     canvas.drawPath(mypath,mpaint);
  }
 }
}

Основная деятельность ->

simple_object=new simpleclass(this);
button.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
         simple_object.update_line(100);
     }
});

обновление при нажатии кнопки не работает при создании объекта (simple_object), но будет работать после того, как объект не создан.

почему так? как обновить когда объект создан?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...