ボタンをクリックしたときにキャンバスを無効にしようとしています。ボタン付きのレイアウトが1つあり、その下にキャンバスビューがあります。ボタンをクリックすると、円が非表示または表示されます。コードでは、キャンバスを無効にできるのは1回だけです。初めてボタンを押すと動作します。しかし、2回押すと機能しません。例:非表示を押すと、それが機能することを示します。しかし、もう一度非表示ボタンを押すと機能しません。ボタンをクリックすると、CanvasViewを毎回無効にします。初めてだけではありません。
public class CanvasWithButtonsActivity extends Activity {
boolean showCircle = true;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(layout());
findViewById(R.id.buttonHide).setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
//HIDE
showCircle = false;
//How do i invalidate my canvas from here?
CanvasView cv = new CanvasView(getApplicationContext());
cv.invalidate();
}
});
findViewById(R.id.buttonShow).setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
//SHOW
showCircle = true;
//How do i invalidate my canvas from here?
CanvasView cv = new CanvasView(getApplicationContext());
cv.invalidate();
}
});
}
public RelativeLayout layout(){
RelativeLayout mainLayout = new RelativeLayout(this);
mainLayout.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT, 1));
mainLayout.setBackgroundColor(Color.WHITE);
View buttonLayout = LayoutInflater.from(getBaseContext()).inflate(R.layout.main, null);
buttonLayout.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT, 1));
CanvasView cv = new CanvasView(getApplicationContext());
mainLayout.addView(cv);
mainLayout.addView(buttonLayout);
return mainLayout;
}
private class CanvasView extends View{
public CanvasView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
protected void onDraw(Canvas myCanvas){
Paint myPaint = new Paint();
myPaint.setColor(Color.BLUE);
if(showCircle == true)
myCanvas.drawCircle(myCanvas.getWidth()/2, 100, 20, myPaint);
}
}
}
誰かがこの質問に対する解決策を持っているなら、それは私の問題の多くを解決するでしょう。