title: Android--called invalidate() but view does not refresh
body: <p>Hi I'm doing a practice project which could draw a line with the coordinates I put. The screen only have two textfields and one button. For example if I put "20" and "30" in those two textfields and click the "draw" button, I want the app to draw a line from (0,0) to (20,30) in ANOTHER VIEW. The problem is when I click the button, the values in those two textfields are passed into the setCoordinates() function, but the view just doesn't show the line. I tried change coordinates[0] and coordinates[1] to 50 and 50 in the canvas.drawLine() function then the line shows up, so I guess may be the invalidate() function is not working? Anyway please help find where my problem is, thanks!!!!! Here is my code:</p>
  
  <p>MazeBuilder.java</p>
  
  <pre><code>package com.example.maze;
  
  import android.os.Bundle;
  import android.view.View;
  import android.widget.EditText;
  import android.app.Activity;
  import android.graphics.Color;
  
  public class MazeBuilder extends Activity {
  
  private DrawMaze drawMaze ;
  private EditText editTextX;
  private EditText editTextY;
  
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
  
  
      drawMaze = new DrawMaze(this);
      setContentView(R.layout.activity_maze_builder);
      editTextX = (EditText) findViewById(R.id.editText1);
      editTextY = (EditText) findViewById(R.id.editText2);
  
  
  
  }
  
  public void buildMaze(View view){
  
      final int x = getValue(editTextX);
      final int y = getValue(editTextY);
  
      drawMaze.setCoordinates(x, y);
  
  }
  
  private static int getValue (EditText text) {
      try {
          return Integer.parseInt(text.getText().toString());
      } catch (NumberFormatException ex) {
          return 0;
      }
  }
  
  }
  </code></pre>
  
  <p>DrawMaze.java</p>
  
  <pre><code>package com.example.maze;
  
  import android.content.Context;
  import android.graphics.Canvas;
  import android.graphics.Color;
  import android.graphics.Paint;
  import android.util.AttributeSet;
  import android.view.View;
  
  public class DrawMaze extends View{
  
  private Paint paint = new Paint();
  
  private int[] coordinates = new int[2];
  
  //===============================Constructors==============================================
  //
  //  
  public DrawMaze(Context context) {
  
      super( context );
  
  }
  
  public DrawMaze(Context context, AttributeSet attrs) {
  
      super( context, attrs );
  }
  
  public DrawMaze(Context context, AttributeSet attrs, int defStyle) {
  
      super( context, attrs, defStyle );
  }
  
  //===============================Initialize the color of line and background==========================================
  //
  //      
  public void init(){
  
      paint.setColor(Color.BLACK);
      this.setBackgroundColor(Color.WHITE);
  }
  
  public void setCoordinates(int x, int y){
      coordinates[0] = x;
      coordinates[1] = y;
  
      invalidate();
  }
  
  @Override
  protected void onDraw(Canvas canvas) {
  
      System.out.println("=============coordinates[0]:"+coordinates[0]+"================coordinates[1]:"+coordinates[1]+"========");
      canvas.drawLine(0, 0, coordinates[0] , coordinates[1] , paint);
  }
  
  
  
  }
  </code></pre>
  
  <p>activity_maze_builder.xml</p>
  
  <pre><code>&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:paddingBottom="@dimen/activity_vertical_margin"
  android:paddingLeft="@dimen/activity_horizontal_margin"
  android:paddingRight="@dimen/activity_horizontal_margin"
  android:paddingTop="@dimen/activity_vertical_margin"
  tools:context=".MazeBuilder" &gt;
  
  &lt;com.example.maze.DrawMaze
  
      android:id="@+id/relativeLayout2"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_below="@+id/relativeLayout1" /&gt;
  
  
  
  &lt;RelativeLayout
      android:id="@+id/relativeLayout1"
      android:layout_width="500dp"
      android:layout_height="50dp"
      android:layout_alignParentLeft="true"
      android:layout_alignParentTop="true" &gt;
  
      &lt;TextView
          android:id="@+id/textView1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignBaseline="@+id/editText2"
          android:layout_alignBottom="@+id/editText2"
          android:layout_centerHorizontal="true"
          android:text="Columns: "
          android:textAppearance="?android:attr/textAppearanceMedium" /&gt;
  
      &lt;EditText
          android:id="@+id/editText2"
          android:layout_width="60dp"
          android:layout_height="wrap_content"
          android:layout_alignParentTop="true"
          android:layout_toLeftOf="@+id/button1"
          android:ems="10" &gt;
  
          &lt;requestFocus /&gt;
      &lt;/EditText&gt;
  
      &lt;Button
          android:id="@+id/button1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignBottom="@+id/editText2"
          android:layout_alignParentRight="true"
          android:layout_alignParentTop="true"
          android:onClick="buildMaze"
          android:text="Build" /&gt;
  
      &lt;EditText
          android:id="@+id/editText1"
          android:layout_width="60dp"
          android:layout_height="wrap_content"
          android:layout_alignParentTop="true"
          android:layout_toLeftOf="@+id/textView1"
          android:ems="10" /&gt;
  
      &lt;TextView
          android:id="@+id/textView2"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignBaseline="@+id/editText1"
          android:layout_alignBottom="@+id/editText1"
          android:layout_toLeftOf="@+id/editText1"
          android:text="Rows: "
          android:textAppearance="?android:attr/textAppearanceMedium" /&gt;
  
  &lt;/RelativeLayout&gt;
  </code></pre>
  
  <p></p>