Android 第一次正确渲染Achartenge,但当我删除它并将一个具有不同数据点的渲染添加到linearlayout时,预设会消失

Android 第一次正确渲染Achartenge,但当我删除它并将一个具有不同数据点的渲染添加到linearlayout时,预设会消失,android,achartengine,Android,Achartengine,我正在创建一个图表来显示一年中不同日子的心情。它在第一次正确渲染。但是,当我按下“下一天”和“上一天”的按钮时,数据点输入正确,但图表预设不正确。例如,图表不再是可点击的,我也不能再平移了(我以前两个都可以)。下面是代码。我做错了什么 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { su

我正在创建一个图表来显示一年中不同日子的心情。它在第一次正确渲染。但是,当我按下“下一天”和“上一天”的按钮时,数据点输入正确,但图表预设不正确。例如,图表不再是可点击的,我也不能再平移了(我以前两个都可以)。下面是代码。我做错了什么

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState)
    {
    super.onCreateView(inflater, container, savedInstanceState);
    mContext = this.getActivity();
    mDbHelper=new CalendarDbAdapter(mContext);
    mDbHelper.open();
    View view = inflater.inflate(R.layout.activity_graph, container, false);
    Button next = (Button) view.findViewById(R.id.next);
    Button previous = (Button) view.findViewById(R.id.previous);
    Day = cal.get(Calendar.DAY_OF_YEAR);
    Year = cal.get(Calendar.YEAR);
    chartView = generate(Day, Year);
    layout = (LinearLayout) view.findViewById(R.id.graph);  
    layout.addView(chartView);

    next.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View arg0) 
        {
            Day++;
            if (Day > 365)
            {
                Day = 0;
                Year++;
            }
            layout.removeView(chartView);
            chartView = generate(Day, Year);
            layout.addView(chartView);

        }
    });
    previous.setOnClickListener(new OnClickListener()
    {

        public void onClick(View arg0) 
        {
            Day--;
            if (Day < 0)
            {
                Day = 0;
                Year--;
            }
            layout.removeView(chartView);
            chartView = generate(Day, Year);
            layout.addView(chartView);
        }

    });

    chartView.setOnClickListener(new View.OnClickListener()
    {

        @Override
        public void onClick(View arg0) {
            SeriesSelection seriesSelection = chartView.getCurrentSeriesAndPoint();
            Log.e("series select is",""+seriesSelection);
            Log.e("I was","clicked");
        }

    });
    return view;

    }

@Override
public void onDestroy()
{
    super.onDestroy();
    mDbHelper.close();
}

public GraphicalView generate(long Day, long Year)
{
    Cursor calendar = mDbHelper.fetchDay(Year, Day);
    Calendar cal = Calendar.getInstance();  
    cal.set(Calendar.YEAR, (int)Year);  
    cal.set(Calendar.DAY_OF_YEAR, (int)Day);  
    Log.e("Day is",""+Day);
    Date date = cal.getTime();  
    String sDate = new SimpleDateFormat("MM/dd/yyyy").format(date);  
    minutes.clear();
    mood.clear();
        while (calendar.moveToNext())
        {
            Hour = Float.valueOf((calendar.getInt(calendar.getColumnIndexOrThrow(CalendarDbAdapter.COLUMN_NAME_MINUTES))))/60;
            minutes.add(Hour);
            mood.add(calendar.getInt(calendar.getColumnIndexOrThrow(CalendarDbAdapter.COLUMN_NAME_FEELING)));
        }


    if (! calendar.moveToFirst())
    {
        Toast.makeText(mContext, "No events this day!", Toast.LENGTH_SHORT).show();
    }

    XYValueSeries series = new XYValueSeries("Mood by Time"); 
    if (minutes.size() > 0)
    {
        for( int i = 0; i < minutes.size(); i++)
        {
            series.add(minutes.get(i), mood.get(i));
        }
    }

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

    XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); // Holds a collection of XYSeriesRenderer and customizes the graph
    XYSeriesRenderer renderer = new XYSeriesRenderer();// This will be used to customize line 1
    mRenderer.addSeriesRenderer(renderer);
    double[] limits = new double [] {0, 23, 0, 7};
    mRenderer.setPanLimits(limits);
    mRenderer.setPanEnabled(true, false);
    for (int i = 0; i < 23; i++)
    {
        if (i == 0)
        {
            mRenderer.addXTextLabel(i, ""+(i+12)+" AM");

        }
        if (i > 0 && i < 12)
        {
            mRenderer.addXTextLabel(i, ""+(i+" AM"));
        }

        if (i == 12)
        {
            mRenderer.addXTextLabel(i, ""+(i +" PM"));
        }

        if (i > 12 && i < 24)
        {
            mRenderer.addXTextLabel(i, ""+((i -12 ) +" PM"));
        }
    }

    for (int i = 0; i < 7; i++)
    {
        if (i == 0)
        {
        mRenderer.addYTextLabel(i, "Terrible");
        }

        if (i == 3)
        {
            mRenderer.addYTextLabel(i, "Neutral");
        }

        if (i == 6)
        {
            mRenderer.addYTextLabel(i, "Fantastic");
        }

    }
    mRenderer.setYAxisMax(7);
    mRenderer.setYAxisMin(0);
    mRenderer.setXAxisMax(23);
    mRenderer.setPointSize(5);
    mRenderer.setChartTitle(sDate);
    mRenderer.setClickEnabled(true);
    // Customization time for line 1!
    renderer.setColor(Color.BLUE);
    renderer.setLineWidth(3);
    renderer.setPointStyle(PointStyle.CIRCLE);
    renderer.setFillPoints(true);

    // Customization time for line 2!

    GraphicalView chartView;

    chartView = ChartFactory.getLineChartView(mContext, dataset, mRenderer);
    return chartView;

}
@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState)
{
super.onCreateView(充气机、容器、保存状态);
mContext=this.getActivity();
mDbHelper=新日历适配器(mContext);
mDbHelper.open();
视图=充气机。充气(R.layout.activity\u图,容器,假);
Button next=(Button)view.findViewById(R.id.next);
Button previous=(Button)view.findViewById(R.id.previous);
Day=cal.get(日历年的第天);
年=校准获取(日历年);
图表视图=生成(天,年);
layout=(LinearLayout)view.findviewbyd(R.id.graph);
布局。添加视图(图表视图);
setOnClickListener(新的OnClickListener()
{
@凌驾
公共void onClick(视图arg0)
{
Day++;
如果(天>365)
{
日=0;
年份++;
}
布局。移除视图(图表视图);
图表视图=生成(天,年);
布局。添加视图(图表视图);
}
});
previous.setOnClickListener(新的OnClickListener()
{
公共void onClick(视图arg0)
{
天——;
如果(天<0)
{
日=0;
年--;
}
布局。移除视图(图表视图);
图表视图=生成(天,年);
布局。添加视图(图表视图);
}
});
setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图arg0){
SeriesSelection SeriesSelection=chartView.getCurrentSeriesAndPoint();
Log.e(“系列选择为”,“系列选择为”+);
Log.e(“我被点击了”);
}
});
返回视图;
}
@凌驾
公共空间
{
super.ondestory();
mDbHelper.close();
}
公共图形视图生成(长日、长年)
{
游标日历=mDbHelper.fetchDay(年,日);
Calendar cal=Calendar.getInstance();
校准设置(日历年,(整数)年);
校准设置(日历日/年(整数)日);
Log.e(“日为“,”+日);
Date-Date=cal.getTime();
字符串sDate=新的SimpleDataFormat(“MM/dd/yyyy”)。格式(日期);
分钟。清除();
心情,心情;
while(calendar.moveToNext())
{
小时=Float.valueOf((calendar.getInt(calendar.getColumnIndexOrThrow(calendardadapter.COLUMN\u NAME\u MINUTES)))/60;
分钟。加上(小时);
添加(calendar.getInt(calendar.getColumnIndexOrThrow(calendardadapter.COLUMN\u NAME\u FEELING));
}
如果(!calendar.moveToFirst())
{
Toast.makeText(mContext,“今天没有事件!”,Toast.LENGTH\u SHORT.show();
}
XYValueSeries=新的XYValueSeries(“时间情绪”);
如果(分钟.size()>0)
{
对于(int i=0;i0&&i<12)
{
mrender.addxtlabel(i,“+(i+“AM”);
}
如果(i==12)
{
mrender.addxtlabel(i,“+(i+“PM”);
}
如果(i>12&&i<24)
{
addxtlabel(i,“+((i-12)+“PM”);
}
}
对于(int i=0;i<7;i++)
{
如果(i==0)
{
mrender.addYTextLabel(i,“可怕”);
}
如果(i==3)
{
mrender.addYTextLabel(i,“中性”);
}
如果(i==6)
{
mRenderer.addYTextLabel(i,“奇妙”);
}
}
setYAxisMax(7);
mrender.setYAxisMin(0);
setXAxisMax(23);
mrender.设定点大小(5);
mRenderer.setChartTitle(sDate);
mrender.setClickEnabled(真);
//1号线的定制时间!
渲染器.setColor(Color.BLUE);
设置线宽(3);
渲染器.setPointStyle(PointStyle.CIRCLE);
渲染器。设置填充点(真);
//2号线的定制时间!
图形视图图表视图;
chartView=ChartFactory.getLineChartView(mContext、dataset、MRender);
返回图表视图;
}

哎呀,onlicklistener只响应了初始视图。我将onclicklistener移到我的chartview方法中,它开始工作。

好,现在我看到它与mrender.setClickEnabled(true)有关;当我把它拿出来时,我可以在图表视图的所有实例上滚动。但是为什么我可以滚动并单击默认图表,而在按下下一步和上一步按钮时却不能滚动或单击?