2014-01-22 114 views
0

我有一个带有Achartengine折线图的Android片段(从achartengine官方示例复制而来)。我的活动一次显示一个片段,并使用菜单在这些片段之间切换。第一次显示ChartFragment工作正常,但当我切换到另一个片段,然后切换回ChartFragment时,chartview消失了。使用Achartengine的Android片段 - 切换片段后图表消失

public class MainActivity { 

    // ... 

    public void replaceFragment(int position) { 
     FragmentTransaction fragTransaction = mFragmentManager 
       .beginTransaction(); 
     fragTransaction.replace(R.id.fragment_container, 
       fragments.valueAt(position)); 
     fragTransaction.commit(); 
    } 

    // ... 
} 

public class ChartFragment extends Fragment { 

    // ... 

    @Override 
    protected void onResume() { 
     super.onResume(); 

     View view = this.getView(); 

     if (mChartView == null) { 
      LinearLayout layout = (LinearLayout) view.findViewById(R.id.chart); 
      mChartView = ChartFactory.getLineChartView(this, mDataset, 
        mRenderer); 
      layout.addView(mChartView, new LayoutParams(
        LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 
     } else { 
        mChartView.repaint(); 
     } 
    }  

    // ... 
} 

onResume()的第一个调用工作正常,图表已创建并显示。如果再次调用onResume(),则图表消失。调用repaint()没有帮助(mChartView不为空)。切换回该片段后,如何显示图表?

在此先感谢!

回答

0

使用此到位乌尔replaceFragment()

public void replaceFragment(int position) { 
    FragmentTransaction fragTransaction = mFragmentManager 
      .beginTransaction(); 
    fragTransaction.replace(R.id.frame, fragments.get(position)); 
    fragTransaction.addToBackStack(null).commit(); 
} 

和的onResume()

public void onResume() 
    { 
     super.onResume(); 
     System.out.println("onResume called"); 
     View view = this.getView(); 
     if(mChartView == null) 
     { 
      LinearLayout layout = (LinearLayout) view.findViewById(R.id.chart); 
      mChartView = ChartFactory.getLineChartView(getActivity(), mDataset, mRenderer); 
      layout.addView(mChartView, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 
     } 
     else 
     { 
      mChartView.repaint(); 
     } 
    }