0

ボタン付きのレイアウトがあります。ボタンを押すと、円グラフを含むカスタム ダイアログが表示されます。簡単にするために、静的な値を使用しています。戻るボタンを押してダイアログをキャンセルし、もう一度ボタンを押して円グラフのダイアログを表示しましたが、グラフが表示されず、空白のダイアログしかありません。その理由は何ですか?

ところで、そのレイアウトには別のチャートを表示するための別のボタンがあります。どちらのグラフを先に表示しても、その後は表示されません。

チャートを再度表示できるようにするには、アクティビティ (レイアウト) をリロードする必要があります (1 回だけ表示すると、再び表示されなくなります)。

それが重要な場合は、タブアクティビティを使用しています。

btnnumpie = (Button)findViewById(R.id.btnnumpie);
        btnnumpie.setOnClickListener(new View.OnClickListener() 
            {
                public void onClick(View v) 
                {
                    dialog_num = new Dialog(Summary.this);
                    dialog_num.setContentView(R.layout.dialog_pie_numdur);
                    dialog_num.setTitle("Pie Chart");
                    dialog_num.setCancelable(true);

                    CategorySeries series = new CategorySeries("Number of calls");
                    series.add("Incoming (" + 20  + "%)" , 20);
                    series.add("Outgoing (" + 50  + "%)" , 50);
                    series.add("Missed (" +20  + "%)" , 20);

                    int[] colors = new int [] {Color.rgb(33, 115, 6), Color.rgb(27, 82, 171), Color.rgb(206, 13, 13)};

                    DefaultRenderer renderer = new DefaultRenderer();
                    for (int color: colors){
                        SimpleSeriesRenderer r = new SimpleSeriesRenderer();
                        r.setColor(color);
                        renderer.addSeriesRenderer(r);
                    }   
                    renderer.setFitLegend(true);
                    renderer.setLabelsColor(Color.BLACK);
                    renderer.setLabelsTextSize(16);

                  renderer.setShowLegend(false);

                    if (mChartView == null) {
                            LinearLayout graphpie = (LinearLayout)dialog_num.findViewById(R.id.graphpie);
                                mChartView = ChartFactory.getPieChartView(Summary.this, series, renderer);
                                graphpie.addView(mChartView, new LayoutParams
                            (LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

                              } else {
                                mChartView.repaint();
                              }

                    dialog_num.show();
                }
            });
4

1 に答える 1

1

これを交換しました

 if (mChartView == null) {
                            LinearLayout graphpie = (LinearLayout)dialog_num.findViewById(R.id.graphpie);
                                mChartView = ChartFactory.getPieChartView(Summary.this, series, renderer);
                                graphpie.addView(mChartView, new LayoutParams
                            (LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

                              } else {
                                mChartView.repaint();
                              }

これに:

LinearLayout graphpie = (LinearLayout)dialog_dur.findViewById(R.id.graphpie);
                    mChartView = ChartFactory.getPieChartView(CallStatsSummary.this, series, renderer);
                    graphpie.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
于 2012-05-30T21:37:20.767 に答える