Как добавить прослушиватель касаний на точку данных?
Я хочу добавить прослушиватель крана на точке данных в представлении графика в 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();
}
});
}
}
2 ответа
Решение
Ваш OnDataPointTapListener
является анонимным классом, внутри этого класса метод getActivity
не существует, но он выходит из вашей активности. Вы должны использовать this
от твоего MainActivity
не это от вашего 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();