Java Android:在片段中创建饼图的问题
在我的Android应用程序中,我正在使用achartengine库创建一个饼图。单击按钮时,它从sqlite数据库获取数据并绘制饼图。这是我的代码段Java Android:在片段中创建饼图的问题,java,android,fragment,pie-chart,Java,Android,Fragment,Pie Chart,在我的Android应用程序中,我正在使用achartengine库创建一个饼图。单击按钮时,它从sqlite数据库获取数据并绘制饼图。这是我的代码段 btnpieChart.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { SelectDBAdapter selectDBAda
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);
}
}
});
我在一个片段中完成了所有这些事情。我发现在片段中创建新的布局不是一件好事。而且,当我使用上述解决方案时,它会创建一次饼图,并且无法从饼图屏幕返回
我很困惑如何解决这个问题。如果有人能解释一下这里发生了什么,我将不胜感激,我怎样才能解决这个问题
非常感谢替换片段:
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.details, new NewFragmentToReplace, "NewFragmentTag");
ft.commit();
如果您想返回到前一个fragmnet,请确保将上述事务添加到后堆栈中,即
ft.addToBackStack(null);
替换片段:
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.details, new NewFragmentToReplace, "NewFragmentTag");
ft.commit();
如果您想返回到前一个fragmnet,请确保将上述事务添加到后堆栈中,即
ft.addToBackStack(null);
@SweetWisher能否请您用一些代码段来解释它?@SweetWisher能否请您用一些代码段来解释它?那么我应该如何将饼图添加到新创建的片段中?您创建饼图的代码将位于片段的一次创建视图上以前我正在使用此创建饼图。**Intent Intent=getPieChartIntent(getActivity(),distributionSeries,defaultRenderer,“仪表板”);getActivity().startActivity(意图);**我能用它吗?不,碎片你不能用星际触觉。。然后它将只创建新布局..那么我应该如何在新片段中创建饼图?请帮助我澄清这一点。\n那么我应该如何将饼图添加到新创建的片段中?您创建饼图的代码将位于OnCreateView of Fragments上以前我使用此创建饼图。**Intent Intent=ChartFactory.getPieChartIntent(getActivity(),distributionSeries,defaultRenderer,“仪表板”);getActivity().startActivity(意图);**我能用它吗?不,碎片你不能用星际触觉。。然后它将只创建新布局..那么我应该如何在新片段中创建饼图?请帮我澄清一下\