@Override
 public void onSaveInstanceState(Bundle state) {
   super.onSaveInstanceState(state);
   if (chartGallery != null && myAdapter != null) {
     state.putInt(SELECTED_CHART_PAGE, myAdapter.getCurrentPage());
     state.putInt(SELECTED_CHART_COLUMN, myAdapter.getCurrentColumn());
   }
 }
  protected final void updateChartHeadline() {

    String subHeadlineText = "";
    String title = myAdapter.getCurrentChartTitle();
    String ret = myAdapter.getCurrentSubHeadLine();
    if (ret != null) subHeadlineText = ret;

    updateTitleTextSwitcher(title);

    if (Preferences.getShowChartHint(getActivity())) {
      timeframeText.setText(Html.fromHtml(getChartHint()));
    } else {
      if (timetext != null) {
        timeframeText.setText(Html.fromHtml(timetext + ": <b>" + subHeadlineText + "</b>"));
      }
    }
  }
  public void updateCharts(List<?> statsForApp) {
    Chart chart = new Chart();
    int page = myAdapter.getCurrentPage();
    int column = myAdapter.getCurrentColumn();

    int position = -1;
    List<View> charts = new ArrayList<View>();

    int pos = 0;
    for (int i = 0; i < myAdapter.getNumPages(); i++)
      for (int j = 1; j < myAdapter.getNumCharts(i); j++) {
        int pageColumn[] = new int[3];
        View chartView = myAdapter.buildChart(getActivity(), chart, statsForApp, i, j);
        /*
         * if(chartView==null) {
         * Log.i(LOG_TAG,"Ignoring chart p="+i+" c="+j+"for class="
         * +this.getClass().toString()); continue; }
         */
        Gallery.LayoutParams params =
            new Gallery.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
        chartView.setLayoutParams(params);
        pageColumn[0] = i;
        pageColumn[1] = j;
        pageColumn[2] = myAdapter.getNumCharts(i);
        if (i == page && j == column) position = pos;
        pos++;
        chartView.setTag(pageColumn);
        charts.add(chartView);
      }
    chartGallery.setIgnoreLayoutCalls(false);
    chartGalleryAdapter.setViews(charts);
    if (position >= 0) chartGallery.setSelection(position);
    chartGalleryAdapter.notifyDataSetChanged();
    chartGallery.invalidate();
  }
  public void setCurrentChart(int page, int column) {
    if (chartGalleryAdapter.getViews().isEmpty()) {
      // chart not initialized yet
      return;
    }

    int pos = 0;
    for (View view : chartGalleryAdapter.getViews()) {
      int pageColumn[] = (int[]) view.getTag();
      if (page == pageColumn[0] && column == pageColumn[1]) {
        chartGallery.setSelection(pos, false);
        myAdapter.setCurrentChart(page, column);
        return;
      }
      pos++;
    }
    throw new IndexOutOfBoundsException("page=" + page + " column=" + column);
  }