Java 如何在Achartengine线图中使用SharedReference?

Java 如何在Achartengine线图中使用SharedReference?,java,android,eclipse,Java,Android,Eclipse,我想在LineGraph的代码中使用SharedReferences: public class LineGraph{ Context applicationContext; SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext); public Intent getIntent(Context context) { // Ou

我想在
LineGraph
的代码中使用
SharedReferences

public class LineGraph{
    Context applicationContext;
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext);
    public Intent getIntent(Context context) {

        // Our first data
        int[] x = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // x values!
        int[] y =  { 30, 34, 45, 57, 77, 89, 100, 111 ,123 ,145 }; // y values!
        TimeSeries series = new TimeSeries("Line1"); 
        for( int i = 0; i < x.length; i++)
        {
            series.add(x[i], y[i]);
        }

        // Our second data
        int[] x2 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // x values!
        int[] y2 =  { 145, 123, 111, 100, 89, 77, 57, 45, 34, 30}; // y values!
        TimeSeries series2 = new TimeSeries("Line2"); 
        for( int i = 0; i < x2.length; i++)
        {
            series2.add(x2[i], y2[i]);
        }

        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
        dataset.addSeries(series);
        dataset.addSeries(series2);

        XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); // Holds a collection of XYSeriesRenderer and customizes the graph
        mRenderer.setZoomButtonsVisible(true);
        XYSeriesRenderer renderer = new XYSeriesRenderer(); // This will be used to customize line 1
        XYSeriesRenderer renderer2 = new XYSeriesRenderer(); // This will be used to customize line 2
        mRenderer.addSeriesRenderer(renderer);
        mRenderer.addSeriesRenderer(renderer2);

        // Customization time for line 1!
        renderer.setColor(Color.WHITE);
        renderer.setPointStyle(PointStyle.SQUARE);
        renderer.setFillPoints(true);
        // Customization time for line 2!
        renderer2.setColor(Color.YELLOW);
        renderer2.setPointStyle(PointStyle.DIAMOND);
        renderer2.setFillPoints(true);

        Intent intent = ChartFactory.getLineChartIntent(context, dataset, mRenderer, "Line Graph Title");
        return intent;
    }
}
公共类线图{
语境应用语境;
SharedReferences prefs=PreferenceManager.GetDefaultSharedReferences(applicationContext);
公共意图getIntent(上下文){
//我们的第一个数据
int[]x={1,2,3,4,5,6,7,8,9,10};//x值!
int[]y={30,34,45,57,77,89100111123145};//y值!
TimeSeries系列=新的TimeSeries(“Line1”);
对于(int i=0;i
但是
SharedReferences prefs=PreferenceManager.getDefaultSharedReferences(applicationContext)

不工作,它停止了应用程序。为什么?

在方法中调用它,而不是在类级别

大概是这样的:

public class LineGraph {
    public Intent getIntent(Context context) {

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);

        // Our first data
        int[] x = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // x values!
        ...

按照您的方式,applicationContext始终为空。

请提供您的logcat输出。 除此之外,我假设您在初始化共享首选项时收到nullpointer异常,因为applicationContext变量为null

将共享首选项的初始化放在getIntent()方法中,并传递上下文参数