如何在数据点上添加点击监听器?
How to add tap listener on data point?
我想在 Android Studio
的图表视图中的数据点上添加点击侦听器。
我的 java 代码中存在问题:无法解析最后一行代码中的方法 get Activity()
。
帮我解决问题。
这是我的代码:
package com.example.graph;
import android.content.Context;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
import android.app.Activity;
import com.jjoe64.graphview.GraphView;
import com.jjoe64.graphview.series.DataPoint;
import com.jjoe64.graphview.series.DataPointInterface;
import com.jjoe64.graphview.series.LineGraphSeries;
import com.jjoe64.graphview.series.OnDataPointTapListener;
import com.jjoe64.graphview.series.PointsGraphSeries;
import com.jjoe64.graphview.series.Series;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GraphView graph = (GraphView) findViewById(R.id.graph);
LineGraphSeries<DataPoint> series = new LineGraphSeries<>(new DataPoint[] {
new DataPoint(0, -2),
new DataPoint(1, 5),
new DataPoint(2, 3),
new DataPoint(3, 2),
new DataPoint(4, 6)
});
graph.addSeries(series);
graph.setBackgroundColor(getResources().getColor(R.color.background_color));
series.setThickness(5);
graph.getViewport().setScalable(true);
graph.getViewport().setScrollable(true);
PointsGraphSeries<DataPoint> series2 = new PointsGraphSeries<>(new DataPoint[] {
new DataPoint(0, -2),
new DataPoint(1, 5),
new DataPoint(2, 3),
new DataPoint(3, 2),
new DataPoint(4, 6)
});
graph.addSeries(series2);
series2.setColor(Color.RED);
series2.setSize(10);
series2.setOnDataPointTapListener(new OnDataPointTapListener() {
@Override
public void onTap(Series series2, DataPointInterface dataPoint) {
Toast.makeText(getActivity(), "Series1: On Data Point clicked: "+dataPoint, Toast.LENGTH_SHORT).show();
}
});
}
}
您的 OnDataPointTapListener
是匿名的 class,在此 class 中,方法 getActivity
不存在,但它确实存在于您的 Activity 中。您应该使用 MainActivity
中的 this
而不是 OnDataPointTapListener
中的这个:
Toast.makeText(MainActivity.this.getActivity(), "Series1: On Data Point clicked: "+dataPoint, Toast.LENGTH_SHORT).show();
而不是 getActivity 放 MainActivity.this
Toast.makeText(MainActivity.this, "Series1: On Data Point clicked: "+dataPoint, Toast.LENGTH_SHORT).show();
我想在 Android Studio
的图表视图中的数据点上添加点击侦听器。
我的 java 代码中存在问题:无法解析最后一行代码中的方法 get Activity()
。
帮我解决问题。
这是我的代码:
package com.example.graph;
import android.content.Context;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
import android.app.Activity;
import com.jjoe64.graphview.GraphView;
import com.jjoe64.graphview.series.DataPoint;
import com.jjoe64.graphview.series.DataPointInterface;
import com.jjoe64.graphview.series.LineGraphSeries;
import com.jjoe64.graphview.series.OnDataPointTapListener;
import com.jjoe64.graphview.series.PointsGraphSeries;
import com.jjoe64.graphview.series.Series;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GraphView graph = (GraphView) findViewById(R.id.graph);
LineGraphSeries<DataPoint> series = new LineGraphSeries<>(new DataPoint[] {
new DataPoint(0, -2),
new DataPoint(1, 5),
new DataPoint(2, 3),
new DataPoint(3, 2),
new DataPoint(4, 6)
});
graph.addSeries(series);
graph.setBackgroundColor(getResources().getColor(R.color.background_color));
series.setThickness(5);
graph.getViewport().setScalable(true);
graph.getViewport().setScrollable(true);
PointsGraphSeries<DataPoint> series2 = new PointsGraphSeries<>(new DataPoint[] {
new DataPoint(0, -2),
new DataPoint(1, 5),
new DataPoint(2, 3),
new DataPoint(3, 2),
new DataPoint(4, 6)
});
graph.addSeries(series2);
series2.setColor(Color.RED);
series2.setSize(10);
series2.setOnDataPointTapListener(new OnDataPointTapListener() {
@Override
public void onTap(Series series2, DataPointInterface dataPoint) {
Toast.makeText(getActivity(), "Series1: On Data Point clicked: "+dataPoint, Toast.LENGTH_SHORT).show();
}
});
}
}
您的 OnDataPointTapListener
是匿名的 class,在此 class 中,方法 getActivity
不存在,但它确实存在于您的 Activity 中。您应该使用 MainActivity
中的 this
而不是 OnDataPointTapListener
中的这个:
Toast.makeText(MainActivity.this.getActivity(), "Series1: On Data Point clicked: "+dataPoint, Toast.LENGTH_SHORT).show();
而不是 getActivity 放 MainActivity.this
Toast.makeText(MainActivity.this, "Series1: On Data Point clicked: "+dataPoint, Toast.LENGTH_SHORT).show();