在我的Android應用程序中,我使用achartengine庫創建餅圖。當點擊一個按鈕時,它會從sqlite數據庫獲取數據並繪製餅圖。這是我的代碼段。Android:在片段中創建餅圖的問題
btnpieChart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SelectDBAdapter selectDBAdapter = SelectDBAdapter
.getDBAdapterInstance(getActivity());
try {
selectDBAdapter.openDataBase();
chartDataMap = selectDBAdapter
.getPieChartData(strBusinessUnit,
currentPeriod, currentYear);
} catch (Exception e) {
selectDBAdapter.close();
e.printStackTrace();
} finally {
selectDBAdapter.close();
}
System.out.println("chartDataMap === "+ chartDataMap);
if (chartDataMap.size() > 0) {
for (Map.Entry<String, Double> entry : chartDataMap.entrySet()) {
lstBrandNames.add(entry.getKey());
lstAchievedVals.add(entry.getValue());
}
ArrayList<Double> distribution = calc_Percentage(lstAchievedVals);
System.out.println("distribution === " + distribution);
lstBrandNames = set_lables(lstBrandNames, distribution);
CategorySeries distributionSeries = new CategorySeries(
"Brands - Achievement Progress");
for (int i = 0; i < distribution.size(); i++) {
distributionSeries.add(lstBrandNames.get(i), distribution.get(i));
}
DefaultRenderer defaultRenderer = new DefaultRenderer();
defaultRenderer.setApplyBackgroundColor(true);
defaultRenderer.setBackgroundColor(Color.WHITE);
for (int i = 0; i < distribution.size(); i++) {
SimpleSeriesRenderer seriesRenderer = new SimpleSeriesRenderer();
Random rnd = new Random();
int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
seriesRenderer.setColor(color);
seriesRenderer.setGradientEnabled(false);
seriesRenderer.setDisplayChartValues(true);
seriesRenderer.setShowLegendItem(false);
defaultRenderer.setLabelsTextSize(25);
defaultRenderer.addSeriesRenderer(seriesRenderer);
}
defaultRenderer.setLabelsColor(Color.BLACK);
defaultRenderer.setChartTitle("Brands - Achievement Progress");
defaultRenderer.setChartTitleTextSize(30);
defaultRenderer.setZoomButtonsVisible(true);
defaultRenderer.setShowLabels(true);
Intent intent = ChartFactory.getPieChartIntent(
getActivity(), distributionSeries,
defaultRenderer, "Dash Board");
getActivity().startActivity(intent);
}
}
});
這創建了餅圖。但有一個問題。比方說,首先,我點擊按鈕,然後創建餅圖。然後我從餅圖屏幕返回並再次單擊該按鈕,然後複製餅圖數據。
我發現像這樣的解決方案。
layout = new LinearLayout(getActivity());
mChartView = ChartFactory.getPieChartView(getActivity(), distributionSeries, defaultRenderer);
layout.removeAllViews();
layout.addView(mChartView); getActivity().setContentView(layout);
我正在做一個片段中的所有這些東西。我發現在片段中創建新的佈局不是一件好事。而且,當我使用上述解決方案時,它會創建一次餅圖,無法從餅圖屏幕返回。
我很困惑我該如何解決這個問題。我會非常感謝,如果有人請這麼友好來解釋這裏發生了什麼,我該如何解決這個問題。
非常感謝
替換片段 –
@SweetWisher你能用一些代碼段來解釋嗎? – Rose18
檢查答案 –