2012-10-22 16 views
7

Iam làm việc trên một ứng dụng Android và sử dụng AChartEngine cho biểu đồ thanh. Mọi thứ đều hoạt động vì nó nên ngoại trừ việc tôi không thể tìm ra thanh nào trong biểu đồ được chạm (không được nhấp). Có vẻ như .getCurrentSeriesAndPoint() không hoạt động trong OnTouchListener. Đó là mọi thời gian trả về NULL. Khi tôi đang sử dụng OnClickListener, mọi thứ đều hoạt động tốt, nhưng tôi cần biết thanh nào được chạm (Action_Down và Action_Up) không được nhấp.android achartengine - Cách nhận biết thanh nào được chạm vào biểu đồ thanh?

Có phải .getCurrentSeriesAndPoint() không hoạt động trong TouchListener nói chung không? Có cách giải quyết hay cách khác để nhận ra thanh nào được chạm vào?

mChartView.setOnTouchListener(new View.OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint(); 


      SimpleSeriesRenderer r = new SimpleSeriesRenderer(); 
      switch(event.getAction()) { 
       case MotionEvent.ACTION_DOWN:{ 
         Toast.makeText(MainActivity.this, "DOWN", Toast.LENGTH_SHORT) .show();       
         if(seriesSelection != null) touchedBar = seriesSelection.getPointIndex(); 
         break;} 

       case MotionEvent.ACTION_UP:{ 
         Toast.makeText(MainActivity.this, "UP", Toast.LENGTH_LONG) .show();       
         touchedBar = 0; 
         break;} 
       default: break; 
      } 

      mRenderer.removeAllRenderers(); 
      r.setColor(Color.RED); 
      r.setSelectedBar(ClickedBar); 
      mRenderer.addSeriesRenderer(r);     
      mChartView.repaint(); 

      return true; 
     } 
    }); 

loại coi Christian

+0

Hi @ChristianR bạn có thể xin vui lòng gửi toàn bộ mã. – user1844638

Trả lời

2

Nó sẽ làm việc với người nghe cảm ứng. Tuy nhiên, bạn vẫn phải làm điều này:

mRenderer.setClickEnabled(true); 

AChartEngine sử dụng onTouchEvent nội bộ, vì vậy nó có thể là sự kiện liên lạc của bạn được gọi sau khi ACE một, vì vậy đây có thể là nguyên nhân vì đã không nhận được giá trị mong đợi.

+0

Cảm ơn, nhưng tôi đã thiết lập mRenderer.setClickEnabled (true) trước đó trong mã của tôi. Và nó vẫn không hoạt động với người nghe cảm ứng. Tôi không nhận được một giá trị từ .getCurrentSeriesAndPoint(). – ChristianR

+0

Xem câu trả lời cập nhật của tôi. –

+2

Câu trả lời cho giải pháp này là gì? –

0

Khi bạn muốn liên lạc và bấm dài, bạn cần phải thiết lập:

mRenderer.setOnClickable(false)