未调用android invalidate函数
在findSellectedBt()中调用invalidate时,findSellectedBt()无效。 因此不会调用onDraw() 为什么这些代码不能正常工作未调用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
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)
,有吗?