Java Android onResume()一个动画饼图
我正在显示一个饼图,其中包含从数据库中获取的数据。数据库查询具有Java Android onResume()一个动画饼图,java,android,sqlite,fragment,Java,Android,Sqlite,Fragment,我正在显示一个饼图,其中包含从数据库中获取的数据。数据库查询具有WHERE子句,其中包含微调器选择的年份。在Fragment的开头,一切正常,但如果不按微调器更改年份,则称为grafico(anno)。我尝试了onResume(),但它不起作用,你有什么建议吗?谢谢 private void grafico(String anno){ // Pie Chart Section Names String[] code = new String[] {"A", "B"
WHERE
子句,其中包含微调器选择的年份。在Fragment的开头,一切正常,但如果不按微调器更改年份,则称为grafico(anno)
。我尝试了onResume()
,但它不起作用,你有什么建议吗?谢谢
private void grafico(String anno){
// Pie Chart Section Names
String[] code = new String[] {"A", "B"};
// Color of each Pie Chart Sections
int[] colors = { Color.rgb(153,204,0), Color.rgb(255,68,68)};
SQLiteDatabase db = new ResgistroSpeseHelper(getActivity()).getReadableDatabase();
String sql = "SELECT SUM(a), SUM(b) FROM table WHERE data LIKE '"+anno+"%'";
Cursor c = db.rawQuery(sql, null);
while (c.moveToNext()){
double a_ = c.getDouble(0);
double b_ = c.getDouble(1);
double somma = b_ + a_;
double perc_1 = (a_ / somma) * 100;
double perc_2 = (b_ / somma) * 100;
// Pie Chart Section Value
double[] distribution = { perc_2, perc_1 } ;
// Instantiating CategorySeries to plot Pie Chart
CategorySeries distributionSeries = new CategorySeries(" Android version distribution as on October 1, 2012");
for(
int i=0 ;
i < distribution.length;
i++){
// Adding a slice with its values and name to the Pie Chart
distributionSeries.add(code[i], distribution[i]);
//distributionSeries.add(perc_entrate);
}
// Instantiating a renderer for the Pie Chart
DefaultRenderer defaultRenderer = new DefaultRenderer();
for(int i = 0 ;i<distribution.length;i++){
SimpleSeriesRenderer seriesRenderer = new SimpleSeriesRenderer();
seriesRenderer.setColor(colors[i]);
seriesRenderer.setDisplayChartValues(true);
// Adding a renderer for a slice
defaultRenderer.addSeriesRenderer(seriesRenderer);
}
defaultRenderer.setLabelsTextSize (12);
defaultRenderer.setLegendTextSize(22);
defaultRenderer.setZoomButtonsVisible(true);
// Getting PieChartView to add to the custom layout
mChartView = ChartFactory.getPieChartView(getActivity(),distributionSeries, defaultRenderer);
// Getting a reference to view group linear layout chart_container
// Adding the pie chart to the custom layout
chartContainer.addView(mChartView);
}
c.close();
db.close();
}
private void grafico(字符串anno){
//饼图分区名称
字符串[]代码=新字符串[]{“A”,“B”};
//每个饼图部分的颜色
int[]colors={Color.rgb(153204,0),Color.rgb(255,68,68)};
SQLiteDatabase db=new ResgistroSpeseHelper(getActivity()).getReadableDatabase();
String sql=“从表中选择SUM(a),SUM(b),其中包含数据,如“'+anno+“%””;
游标c=db.rawQuery(sql,null);
while(c.moveToNext()){
双a=c.getDouble(0);
双b_uuC=getDouble(1);
双somma=b_uu+a_u;
双perc_1=(a_/somma)*100;
双perc_2=(b_/somma)*100;
//饼图截面值
双[]分布={perc_2,perc_1};
//实例化类别以绘制饼图
CategorySeries distributionSeries=新的CategorySeries(“截至2012年10月1日的Android版本发行”);
为了(
int i=0;
i<分布长度;
(i++){
//将带有值和名称的切片添加到饼图中
add(代码[i],分布[i]);
//distributionSeries.add(perc_entrate);
}
//为饼图实例化渲染器
DefaultRenderer DefaultRenderer=新的DefaultRenderer();
for(int i=0;i arg0){
回来
}
});
super.onResume();
}
Hi,我想确认一下,您是想在用户每次看到屏幕时调用方法grafico(anno)还是什么?我想在用户每次从喷丝头选择日期时调用该方法。请将您的代码放在onActivityCreated()[override method of Fagment]而不是onResume()中,并让我知道这是否有效。不是,即使在这种情况下,如果用户通过微调器更改日期,数据也会发生变化,但图表不会用新的数据更新好的,那么让我们按照我说的那样调试代码:请将日志放在方法private void grafico(String anno){}中,并说明在更改微调器时是否打印日志。
@Override
public void onResume(){
years = ottieniAnni();
SpinnerAdapter adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item, years);
yearSelector.setAdapter(adapter);
yearSelector.setSelection(0);
yearSelector.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view,
int position, long id) {
String anno = years.get(position);
grafico(anno);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
return;
}
});
super.onResume();
}