shapeview はカスタム ビューです。ボタンをクリックすると ondraw メソッドが呼び出されるようにする必要があります。見る:
public class ShapeView extends View {
Paint cPaint;
Random r=new Random();
public static int n=3;
public ShapeView(Context context,AttributeSet attrs) {
super(context,attrs);
// TODO Auto-generated constructor stub
cPaint = new Paint();
cPaint.setColor(Color.BLACK);
}
public ShapeView(Context context){
super(context);
}
public void onDraw(Canvas canvas)
{
Log.e("LineView", Integer.toString(n));
int n1=1;
while(n1<=n)
{
Log.d("draw","n= " +n);
int x=r.nextInt(canvas.getWidth()-50);
int y=r.nextInt(canvas.getHeight()-200);
canvas.drawCircle(x, y, 10, cPaint);
n1++;
}
}
public void nextshape(int n)
{
this.n=n;
Log.d("n","n= " +n);
invalidate();
}
}
このカスタム ビューが追加されたアクティビティ内のボタンをクリックすると、nextshape メソッドが呼び出されます。そのコードは次のとおりです。
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId())
{
case R.id.next_button:
i=i+1;
Log.d("shape","i= "+i);
shape.nextshape(i);
break;
}
xml ファイルを使用してアクティビティにビューを追加しています。onDraw メソッドは 2 ~ 3 回しか実行されず、その後は何も起こりません。このコードの問題は何ですか?