title: onTouchevent() problem android
body: <p>when i run the code below everything works fine,it's a simple app with three balls that you can move around...</p>
  
  <pre><code>public class dragndrop extends Activity {
      /** Called when the activity is first created. */
         private ColorBall[] colorballs = new ColorBall[3]; // array that holds the balls
         private static final String TAG="MyTAG";
         DrawView myView;
         private int balID = 0; // variable to know what ball is being dragged
         int X;
         int Y;
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          Point point1 = new Point();
              point1.x = 50;
              point1.y = 20;
              Point point2 = new Point();
              point2.x = 100;
              point2.y = 20;
              Point point3 = new Point();
              point3.x = 150;
              point3.y = 20;
  
  
              // declare each ball with the ColorBall class
              colorballs[0] = new ColorBall(this,R.drawable.bol_groen, point1);
              colorballs[1] = new ColorBall(this,R.drawable.bol_rood, point2);
              colorballs[2] = new ColorBall(this,R.drawable.bol_blauw, point3);
              myView = new DrawView(this);
          setContentView(myView);
      }
  
  
      public class DrawView extends View {
  
  
          public DrawView(Context context) {
              super(context);
              setFocusable(true); //necessary for getting the touch events
  
              // setting the start point for the balls
  
  
          }
  
          // the method that draws the balls
          @Override protected void onDraw(Canvas canvas) {
  
              //draw the balls on the canvas
              for (ColorBall ball : colorballs) {
                  canvas.drawBitmap(ball.getBitmap(), ball.getX(), ball.getY(), null);
                }
  
          }
  
  
  
         // events when touching the screen
          public boolean onTouchEvent(MotionEvent event) {
              int eventaction = event.getAction(); 
  
              X = (int)event.getX(); 
              Y = (int)event.getY(); 
  
              switch (eventaction ) { 
  
              case MotionEvent.ACTION_DOWN: // touch down so check if the finger is on a ball
                  balID = 0;
                  for (ColorBall ball : colorballs) {
                      Log.d(TAG,"inside action down inside for coords:"+X+" coords: "+Y);
                      Log.d(TAG,"ball coords:"+ball.getX()+" coords: "+ball.getY());
  
                      int x =X;
                      int y =Y;
                      Log.d(TAG,"lalalalalala"+x+" coords: "+y);
  
  
  
                      if (x &gt; ball.getX() &amp;&amp; x &lt; ball.getX()+50 &amp;&amp; y &gt; ball.getY() &amp;&amp; y &lt; ball.getY()+50){//if (X &gt; ball.getX() &amp;&amp; X &lt; ball.getX()+50 &amp;&amp; Y &gt; ball.getY() &amp;&amp; Y &lt; ball.getY()+50){
                          Log.d(TAG,"inside ball coords!!!!!!!!!!!!!!!!!!!!!!!!:"+ball.getX()+" coords: "+ball.getY());
                          balID = ball.getID();
  
  
                          break;
                      }
                    }
  
                   break; 
  
  
              case MotionEvent.ACTION_MOVE:   // touch drag with the ball
                  // move the balls the same as the finger
                  if (balID &gt; 0) {
                      colorballs[balID-1].setX(X-25);
                      colorballs[balID-1].setY(Y-25);
                  }
  
                  break; 
  
              case MotionEvent.ACTION_UP: 
                  // touch drop - just do things here after dropping
  
                   break; 
              } 
              // redraw the canvas
              myView.invalidate(); 
              return true; 
  
          }
  
  
      }
  
  
  }
  </code></pre>
  
  <p>But when i try to handle the onTouchevent from the main activity doesn't work and the strange is that it can't read a simple variable(x,y)!!!
  i can't understand why this happened,it seems it can red them only if it's in a View!!!</p>
  
  <pre><code>public class dragndrop extends Activity {
      /** Called when the activity is first created. */
         private ColorBall[] colorballs = new ColorBall[3]; // array that holds the balls
         private static final String TAG="MyTAG";
         DrawView myView;
         private int balID = 0; // variable to know what ball is being dragged
         int X;
         int Y;
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          Point point1 = new Point();
              point1.x = 50;
              point1.y = 20;
              Point point2 = new Point();
              point2.x = 100;
              point2.y = 20;
              Point point3 = new Point();
              point3.x = 150;
              point3.y = 20;
  
  
              // declare each ball with the ColorBall class
              colorballs[0] = new ColorBall(this,R.drawable.bol_groen, point1);
              colorballs[1] = new ColorBall(this,R.drawable.bol_rood, point2);
              colorballs[2] = new ColorBall(this,R.drawable.bol_blauw, point3);
              myView = new DrawView(this);
          setContentView(myView);
      }
  
  
   // events when touching the screen
      public boolean onTouchEvent(MotionEvent event) {
          int eventaction = event.getAction(); 
  
          X = (int)event.getX(); 
          Y = (int)event.getY(); 
  
          switch (eventaction ) { 
  
          case MotionEvent.ACTION_DOWN: // touch down so check if the finger is on a ball
              balID = 0;
              for (ColorBall ball : colorballs) {
                  Log.d(TAG,"inside action down inside for coords:"+X+" coords: "+Y);
                  Log.d(TAG,"ball coords:"+ball.getX()+" coords: "+ball.getY());
  
                  int x =X;
                  int y =Y;
                  Log.d(TAG,"lalalalalala"+x+" coords: "+y);
  
  
  
                  if (x &gt; ball.getX() &amp;&amp; x &lt; ball.getX()+50 &amp;&amp; y &gt; ball.getY() &amp;&amp; y &lt; ball.getY()+50){//if (X &gt; ball.getX() &amp;&amp; X &lt; ball.getX()+50 &amp;&amp; Y &gt; ball.getY() &amp;&amp; Y &lt; ball.getY()+50){
              Log.d(TAG,"inside ball coords!!:"+ball.getX()+" coords: "+ball.getY());
                      balID = ball.getID();
  
  
                      break;
                  }
                }
  
               break; 
  
  
          case MotionEvent.ACTION_MOVE:   // touch drag with the ball
              // move the balls the same as the finger
              if (balID &gt; 0) {
                  colorballs[balID-1].setX(X-25);
                  colorballs[balID-1].setY(Y-25);
              }
  
              break; 
  
          case MotionEvent.ACTION_UP: 
              // touch drop - just do things here after dropping
  
               break; 
          } 
          // redraw the canvas
          myView.invalidate(); 
          return true; 
  
      }
  
  
  
  
      public class DrawView extends View {
  
  
          public DrawView(Context context) {
              super(context);
              setFocusable(true); //necessary for getting the touch events
  
              // setting the start point for the balls
  
  
          }
  
          // the method that draws the balls
          @Override protected void onDraw(Canvas canvas) {
              //canvas.drawColor(0xFFCCCCCC);     //if you want another background color       
  
              //draw the balls on the canvas
              for (ColorBall ball : colorballs) {
                  canvas.drawBitmap(ball.getBitmap(), ball.getX(), ball.getY(), null);
                }
  
          }
  
  
      }
  
  
  }
  </code></pre>
  
  <p>Anyone who knows why?</p>
  
  <p>Yes @bigstones the onTouchevent is working,it captures all the actions,the problem is that if i have the ontouchevent code inside the activity the variables X,Y seems not to work althought that they have a value and i can print it(or log)what i am saying is tested,i've tried and change all the values from the if() statement(getX,getY)to integers and it didn't work only for X,Y.....check the code again please!
  thanks!</p>