未调用android invalidate函数

未调用android invalidate函数,android,ondraw,invalidation,Android,Ondraw,Invalidation,在findSellectedBt()中调用invalidate时,findSellectedBt()无效。 因此不会调用onDraw() 为什么这些代码不能正常工作 public class CustomView extends View { private Typeface t; private Paint paint; private Buttons sellectedBt; public CustomView(Context context) { ... } publi

在findSellectedBt()中调用invalidate时,findSellectedBt()无效。 因此不会调用onDraw()

为什么这些代码不能正常工作

public class CustomView extends View {



private Typeface t;
private Paint paint;
private Buttons sellectedBt;


public CustomView(Context context) {
    ... }

public CustomView(Context context, AttributeSet attrs) {
...}

public CustomView(Context context, AttributeSet attrs, int defStyle) {
...}

@Override
protected void onDraw(Canvas canvas) {
    if(isInEditMode()) return ;

    canvas.drawColor(Color.YELLOW);

    switch(sellectedBt) {
        case ID:
            t = Typeface.create(Typeface.DEFAULT, Typeface.NORMAL);
            paint.setTypeface(t);
            canvas.drawText("ID: 0000", 50, 100, paint);
        case PHOTO:
                    break;
        case LINE:
            break;
        default:
            break;
    }
}

public void findSellectedBt(Buttons buttonId ) {
    sellectedBt = buttonId;
    invalidate();
}
}

公共类MainActivity扩展了活动{

private CustomView customView;
private Button btId;
private CheckBox btPhoto;
private ToggleButton btLineOff;
private Button btClaer;
private ToggleButton btBlue;


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

    customView = new CustomView(this);

    btId = (Button)findViewById(R.id.id);
    btPhoto = (CheckBox)findViewById(R.id.photo);

    btId.setOnClickListener(new OnClickListener() {
        public void onClick(View v){
            System.out.println("idOnclick");
            customView.findSellectedBt(Buttons.ID);

        }
    });

    btPhoto.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
            // TODO Auto-generated method stub
            System.out.println("photoChecked");

            if(arg1 == true)
                customView.findSellectedBt(Buttons.PHOTO);
        }
    });


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}
}

包com.example.hw4_200921275


公共枚举按钮{ID,PHOTO,LINE,CLEAR,BLUE}

仔细检查您正在呼叫的地方

findSellectedBt(buttonsObject);

顺便说一句,请注意
Sellected

中的输入错误,您需要在调用invalidate时查看该错误。。。它是独立线程还是UI线程?我无法区分独立线程和UI线程。区别是什么?您在哪里调用
findSellectedBt
?@ssantos public void findSellectedBt(Buttons buttonnid){sellectedBt=buttonnid;invalidate();}在底部代码中是函数的定义,但我看不到任何调用
findSellectedBt(buttonobject)
,有吗?