0

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 回しか実行されず、その後は何も起こりません。このコードの問題は何ですか?

4

0 に答える 0