我有一个带有Achartengine折线图的Android片段(复制自achartengine的官方示例)。我的活动一次显示一个片段,并使用菜单在这些片段之间切换。显示ChartFragment第一次工作正常,但是当我切换到另一个片段然后切换回我的ChartFragment时,chartview已经消失。
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 :(得分: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();
}
}