почему invalidate() нельзя вызвать извне объекта?

#java #android #user-interface #object #view

#java #Android #пользовательский интерфейс #объект #Вид

Вопрос:

Я реализую пользовательский вид в 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) создан, но будет работать после того, как объект не будет создан.

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

Комментарии:

1. Можете ли вы сделать вопрос более понятным и добавить еще немного кода, который вы пробовали?

2. Начните с замены simple_object.void update_line(100); на simple_object.update_line(100); . Нет причин указывать возвращаемый тип при вызове реализованного метода. Более того, это не должно работать, поскольку вы выполняете статический вызов нестатического метода: вам следует создать экземпляр simple_object в вашей Activity.

3. simple_object является экземпляром класса simpleclass. Как создать экземпляр объекта?