Search code examples
androidputondraw

How can I pass an int to my onDraw in Android? Whats wrong in my code?


in my example project :ondraw need an int to drawing from main activity, when initialize the parameter to 1 in mainActivity, its not draw anything,

//class MyView extends View

 private int parameter=0;//if i change to 1 it will draw,
//but i want set it from main Activity

    public void setParameter(int param)
    {
        this.parameter=param;
        invalidate();
        Log.i("tag9", this.parameter+" setParameter");
    }

            @Override
            protected void onDraw(Canvas canvas) {
                Log.i("tag9",parameter + " ondraw");

                if(this.parameter==0){
                    return;}
        //Drawing code ...
            }

//in MainActivity:

MyView myView = new MyView(this);
        myView.setParameter(1);

//Xml code:

<RelativeLayout ...>


    <view
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        class="(packagename).MyView"
        android:id="@+id/view"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="138dp"/>
</RelativeLayout>

//DDMS

1 setparameter
0 ondraw  // its shouldnt be 0;

Solution

  • thnx to Gabe Sechan , You're creating it via new. That creates a new view not in any layout. If you want to reference a view set in xml, use findViewById – Gabe Sechan

        MyView myView = (MyView)this.findViewById(R.id.view);
        myView.setParameter(1);