2017-01-02 16 views
1

我想要在Android Studio的圖形視圖中的數據點上添加水龍頭偵聽器。如何在數據點上添加tap監聽器?

有一個在我的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(); 
      } 
     }); 
    } 
} 
+0

使用getApplicationContext(),而不是getActivity – siddhesh

回答

2

OnDataPointTapListener是一個匿名類,這個類getActivity不存在的方法內,但它的活動中退出。您應該使用thisMainActivity這不是從你的OnDataPointTapListener

Toast.makeText(MainActivity.this.getActivity(), "Series1: On Data Point clicked: "+dataPoint, Toast.LENGTH_SHORT).show(); 
1

相反getActivity放MainActivity.this

Toast.makeText(MainActivity.this, "Series1: On Data Point clicked: "+dataPoint, Toast.LENGTH_SHORT).show(); 
+1

我可以請你,請添加一些更多關於你答案的上下文。僅有代碼的答案很難理解。如果您可以在帖子中添加更多信息,它可以幫助提問者和未來的讀者。 – RBT