
我是android的新手,我正在使用aChartEngine来创建一个条形图.我想在用户点击图表时捕获x和y值.我查看了来自aChartEngine的演示,让我的图表创建得很好.但是当我点击graphy时,onClickListner不起作用.我已经在OnResume方法中定义了监听器,但它不起作用.任何想法将不胜感激.我在这里错过了什么吗?
这是我的OnResume方法,它取自XYChartBuilder
@OverrIDeprotected voID onResume() { super.onResume();Toast.makeText(Clickable2.this, "In OnResume", Toast.LENGTH_SHORT).show(); if (mChartVIEw == null) { Toast.makeText(Clickable2.this, "mChartVIEw is null", Toast.LENGTH_SHORT).show(); linearLayout layout = (linearLayout) findVIEwByID(R.ID.chart); mChartVIEw = ChartFactory.getbarChartVIEw(this,mDatasetMethod(Titles,x,values),renderer,Type.DEFAulT); renderer.setClickEnabled(true); renderer.setSelectableBuffer(100); //OnClickListener mChartVIEw.setonClickListener(new VIEw.OnClickListener() { // @OverrIDe public voID onClick(VIEw v) { Toast.makeText(Clickable2.this, "ON CliCK", Toast.LENGTH_SHORT).show(); SerIEsSelection serIEsSelection = mChartVIEw.getCurrentSerIEsAndPoint(); double[] xy = mChartVIEw.toRealPoint(0); if (serIEsSelection == null) { Toast.makeText(Clickable2.this, "No chart element was clicked", Toast.LENGTH_SHORT) .show(); } else { Toast.makeText( Clickable2.this, "Chart element in serIEs index " + serIEsSelection.getSerIEsIndex() + " data point index " + serIEsSelection.getPointIndex() + " was clicked" + " closest point value X=" + serIEsSelection.getXValue() + ", Y=" + serIEsSelection.getValue() + " clicked point value X=" + (float) xy[0] + ", Y=" + (float) xy[1], Toast.LENGTH_SHORT).show(); } } }); //LongClickListener mChartVIEw.setonLongClickListener(new VIEw.OnLongClickListener() { // @OverrIDe public boolean onLongClick(VIEw v) { SerIEsSelection serIEsSelection = mChartVIEw.getCurrentSerIEsAndPoint(); Toast.makeText(Clickable2.this, "ON LONG CliCK", Toast.LENGTH_SHORT).show(); if (serIEsSelection == null) { Toast.makeText(Clickable2.this, "No chart element was long pressed", Toast.LENGTH_SHORT); return false; // no chart element was long pressed, so let something // else handle the event } else { Toast.makeText(Clickable2.this, "Chart element in serIEs index " + serIEsSelection.getSerIEsIndex() + " data point index " + serIEsSelection.getPointIndex() + " was long pressed", Toast.LENGTH_SHORT); return true; // the element was long pressed - the event has been // handled } } }); mChartVIEw.addZoomListener(new ZoomListener() { public voID zoomApplIEd(ZoomEvent e) { String type = "out"; if (e.isZoomIn()) { type = "in"; } System.out.println("Zoom " + type + " rate " + e.getZoomrate()); } public voID zoomreset() { System.out.println("reset"); } }, true, true); mChartVIEw.addPanListener(new PanListener() { public voID panApplIEd() { System.out.println("New X range=[" + renderer.getXAxisMin() + ", " + renderer.getXAxisMax() + "], Y range=[" + renderer.getYAxisMax() + ", " + renderer.getYAxisMax() + "]"); } }); layout.addVIEw(mChartVIEw, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)); boolean enabled = mDataset.getSerIEsCount() > 0; } else { mChartVIEw.repaint(); Toast.makeText(Clickable2.this, "mChartVIEw is NOT null", Toast.LENGTH_SHORT).show(); }} 解决方法:
你能检查代码中某些对象的定义,比如XYMultipleSerIEsRenderer吗?
也许你忘了将setClickEnabled方法设置为true?!
或许你应该尝试:
setontouchListener 用方法:
public boolean ontouch(VIEw v, MotionEvent event)这个对我有用.
总结以上是内存溢出为你收集整理的android – aChartEngine,GraphicalView OnClickListener无效全部内容,希望文章能够帮你解决android – aChartEngine,GraphicalView OnClickListener无效所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)