2014-01-22 41 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(); 
     } 
    }