2

Iam working on an android app and using AChartEngine for charting. Everything is working as it should except that I capture the coordinates of touch on screen in OnTouch() method. On first touch it doesnt return me any coordinates and Toast is displayed on Top Left Corner (set by Toast.setGravity()). On Subsequent touches it works perfectly fine and just not on first time i click or touch the screen. Where am i Wrong?

mChartView.setOnClickListener(new View.OnClickListener() {
             Toast test;
            public void onClick(View v) {
              SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint();
              v.setOnTouchListener(new OnTouchListener() {
               public boolean onTouch(View v, MotionEvent event) {

                      xaxis =  event.getX();
                      yaxis =  event.getY(); 
                      xx = (int) xaxis;
                    yy = (int) yaxis;
            return false;
                    }
                });


              if (seriesSelection != null) {

                  int status_index = seriesSelection.getSeriesIndex();
                  int equipment_index = seriesSelection.getPointIndex();
                  double duration_value = seriesSelection.getValue();

                  if(status_index == 0)
                  {
                      if(equipment_index == 0)
                      {
                          duration_value = EquipmentHoursDuration[0][1];
                      }
                      if(equipment_index == 1)
                      {
                          duration_value = EquipmentHoursDuration[1][1];
                      }
                      if(equipment_index == 2)
                      {
                          duration_value = EquipmentHoursDuration[2][1];
                      }
                      if(equipment_index == 3)
                      {
                          duration_value = EquipmentHoursDuration[3][1];
                      }
                      if(equipment_index == 4)
                      {
                          duration_value = EquipmentHoursDuration[4][1];
                      }
                      String final_status = titles[status_index];
               String final_equipment = EquipmentNamePartial[equipment_index];
                    test = Toast.makeText(
                            SalesBar.this,
                              "Status: " + final_status + '\n'
                            + " Equipment: " + final_equipment + '\n'
                            + " Duration: " + duration_value + " hours", Toast.LENGTH_SHORT);


                   test.setGravity(Gravity.TOP|Gravity.LEFT, xx, yy);

                      test.show();
                  }

                  else
                  {
                 String final_status = titles[status_index];
                 String final_equipment = EquipmentNamePartial[equipment_index];
                 if(equipment_index == 0)
              {
                  duration_value = EquipmentHoursDuration[0][0];
              }
              if(equipment_index == 1)
              {
                  duration_value = EquipmentHoursDuration[1][0];
              }
              if(equipment_index == 2)
              {
                  duration_value = EquipmentHoursDuration[2][0];
              }
              if(equipment_index == 3)
              {
                  duration_value = EquipmentHoursDuration[3][0];
              }
              if(equipment_index == 4)
              {
                  duration_value = EquipmentHoursDuration[4][0];
              }



                test = Toast.makeText(
                        SalesBar.this,
                          "Status: " + final_status + '\n'
                        + " Equipment: " + final_equipment + '\n'
                        + " Duration: " + duration_value + " hours", Toast.LENGTH_SHORT);

                     test.setGravity(Gravity.TOP|Gravity.LEFT, xx, yy);

                      test.show();
                  }
              }
            }
          });
Fahad Abid Janjua
  • 1,024
  • 3
  • 14
  • 35

3 Answers3

3

THis is ur code..... Return true instead of false

 public boolean onTouch(View v, MotionEvent event) {

                      xaxis =  event.getX();
                      yaxis =  event.getY(); 
                      xx = (int) xaxis;
                    yy = (int) yaxis;
            return false;

} });

Terril Thomas
  • 1,486
  • 13
  • 32
2

When you call the 1st onClickListener, there is only called the 1st touch. After that the onClickListener will be called as usually. Probably you can try to swap the onClickListener to onTouchListener.

Koogle
  • 401
  • 4
  • 9
Arnold
  • 273
  • 1
  • 11
2
mChartView.setOnTouchListener(new OnTouchListener() {

                public boolean onTouch(View v, MotionEvent event) {
                     if (MotionEvent.ACTION_DOWN == event.getAction()) {
                        xaxis =  event.getRawX();

                yaxis =  event.getRawY(); 
                xx = (int) xaxis;
                yy = (int) yaxis;
                    } else if (MotionEvent.ACTION_UP == event.getAction()) {
                        xaxis =  event.getX();
                          yaxis =  event.getY(); 
                          xx = (int) xaxis;
                        yy = (int) yaxis;
                    }
                    else{}

                    return false;
                }
            });


         mChartView.setOnClickListener(new View.OnClickListener() {
             Toast test;
            public void onClick(View v) {
              SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint();




              if (seriesSelection != null) {

                  int status_index = seriesSelection.getSeriesIndex();
                  int equipment_index = seriesSelection.getPointIndex();
                  double duration_value = seriesSelection.getValue();

                  if(status_index == 0)
                  {
                      if(equipment_index == 0)
                      {
                          duration_value = EquipmentHoursDuration[0][1];
                      }
                      if(equipment_index == 1)
                      {
                          duration_value = EquipmentHoursDuration[1][1];
                      }
                      if(equipment_index == 2)
                      {
                          duration_value = EquipmentHoursDuration[2][1];
                      }
                      if(equipment_index == 3)
                      {
                          duration_value = EquipmentHoursDuration[3][1];
                      }
                      if(equipment_index == 4)
                      {
                          duration_value = EquipmentHoursDuration[4][1];
                      }
                      String final_status = titles[status_index];
                     String final_equipment = EquipmentNamePartial[equipment_index];
                    test = Toast.makeText(
                            SalesBar.this,
                              "Status: " + final_status + '\n'
                            + " Equipment: " + final_equipment + '\n'
                            + " Duration: " + duration_value + " hours", Toast.LENGTH_SHORT);



                     test.setGravity(Gravity.TOP|Gravity.LEFT, xx, yy);

                      test.show();
                  }

                  else
                  {
                 String final_status = titles[status_index];
                 String final_equipment = EquipmentNamePartial[equipment_index];
                 if(equipment_index == 0)
              {
                  duration_value = EquipmentHoursDuration[0][0];
              }
              if(equipment_index == 1)
              {
                  duration_value = EquipmentHoursDuration[1][0];
              }
              if(equipment_index == 2)
              {
                  duration_value = EquipmentHoursDuration[2][0];
              }
              if(equipment_index == 3)
              {
                  duration_value = EquipmentHoursDuration[3][0];
              }
              if(equipment_index == 4)
              {
                  duration_value = EquipmentHoursDuration[4][0];
              }



                test = Toast.makeText(
                        SalesBar.this,
                          "Status: " + final_status + '\n'
                        + " Equipment: " + final_equipment + '\n'
                        + " Duration: " + duration_value + " hours", Toast.LENGTH_SHORT);





                     test.setGravity(Gravity.TOP|Gravity.LEFT, xx, yy);

                      test.show();
                  }
              }
            }
          });
Fahad Abid Janjua
  • 1,024
  • 3
  • 14
  • 35