2012-05-30 2 views
0

У меня есть макет с кнопкой. Когда я нажимаю кнопку, появляется диалоговое окно с круговой диаграммой. Для простоты я использую статические значения. Я нажимаю кнопку «Назад», чтобы отменить диалог, затем снова нажмите кнопку, чтобы отобразить диалог с круговой диаграммой, но диаграмма отсутствует, все, что у меня есть, - это пустой диалог. В чем причина?Achartengine - круговая диаграмма исчезает в диалоге

Btw, у меня есть еще одна кнопка в этом макете, чтобы показать другую диаграмму. Независимо от того, какой график я показываю первым, другой не появляется после этого.

Мне нужно перезагрузить операцию (макет), чтобы снова показать график (за один раз, затем он снова исчезает).

Я использую tabactivity, если это имеет значение.

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(); 
       } 
      }); 

ответ

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)); 
Смежные вопросы