Achartengine графики в виде вкладок - PullRequest
0 голосов
/ 10 февраля 2012

Я новичок, и немного работал со списками и графиками.Я использовал тот же код, что и из примеров ахартенгина.Моя активность запуска, которая происходит от TabActivity, имеет метод создания следующим образом:

setContentView(R.layout.tabstrip);
Resources res = getResources(); // Resource object to get Drawables
TabHost tabHost = getTabHost();  // The activity TabHost
TabHost.TabSpec spec;  // Resusable TabSpec for each tab
Intent intent;  // Reusable Intent for each tab
SalesBarChart myChart = new SalesBarChart();
intent = myChart.execute(this);   
spec = tabHost.newTabSpec("BarChart").setIndicator("BarChart",
                  res.getDrawable(R.drawable.ic_tab_barchart))
              .setContent(intent);
tabHost.addTab(spec);
AverageTemperatureChart myChart1 = new AverageTemperatureChart();
intent = myChart1.execute(this);
spec = tabHost.newTabSpec("albums").setIndicator("Albums",
                  res.getDrawable(R.drawable.ic_tab_linechart))
              .setContent(intent);
tabHost.addTab(spec);
tabHost.setCurrentTab(1);

Мой XML-файл выглядит так:

     <TabHost
      xmlns:android="http://schemas.android.com/apk/res/android"
       android:orientation="vertical"
       android:layout_width="match_parent"
       android:layout_height="match_parent">
         <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="5dp">
           <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" />
           <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:padding="5dp" />
       </LinearLayout>

Те же самые цели яСрабатывание запуска (намерения) при нажатии кнопки работает, но не работает во вкладках.Пожалуйста помоги.Заранее спасибо.

1 Ответ

1 голос
/ 22 февраля 2012

У меня была такая же проблема две недели назад. Но у меня было pieChart в слое xml объединить другие представления. В любом случае, я создаю действие для каждой вкладки и диаграммы и вызываю действия вместо диаграмм. В одном из моих действий у меня есть этот код:

public class FirstChartActivity extends Activity{
    // other code
    protected void onResume() {
            super.onResume();
            if (hChartView == null) { // first time pie chart is empty
                renderer = buildCategoryRenderer(colors);
                renderer.setLabelsTextSize(14);
                categorySeries = setCategorySeries("First PieChart",
                        myList);
                // draw pie chart with initialized values (myList and colors)
                hChartView = ChartFactory.getPieChartView(this, categorySeries,
                renderer);
                LinearLayout layout = (LinearLayout) findViewById(R.id.pch_chart);
                layout.addView(hChartView, new LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.FILL_PARENT));
            } else {
                hChartView.repaint();
            }
        }

        protected DefaultRenderer buildCategoryRenderer(int[] colors) {
            DefaultRenderer renderer = new DefaultRenderer();
            for (int color : colors) {
                SimpleSeriesRenderer r = new SimpleSeriesRenderer();
                r.setColor(color);
                renderer.addSeriesRenderer(r);
            }
            return renderer;
        }

        protected CategorySeries setCategorySeries(String chartTitle,
                HashMap<String, Double> hashMap) {
            CategorySeries cs = new CategorySeries(chartTitle);
            Iterator<String> iter = hashMap.keySet().iterator();
            while (iter.hasNext()) {
                String key = iter.next();
                Double val = hashMap.get(key);
                cs.add(key, val);
            }
            return cs;
        }
    }

Надеюсь, этот код поможет вам.

...