第二次显示片段时,Android自定义视图会丢失尺寸

时间:2014-09-25 19:06:45

标签: android android-fragments custom-view onmeasure

我有一个继承自SurfaceView的自定义视图。该视图主要是基于绘图的,需要知道视图的宽度/高度。维度是在onMeasure方法中计算的,并且工作正常。

在onCreateView方法中,我在片段中膨胀的布局中使用此视图:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstance){
    View v = inflater.inflate(R.layout.fragment_anim, null);
    mPlayerView = (KanjiPlayerView)v.findViewById(R.id.kanjiPlayer);
    return v;
}

由于此应用程序将在手机上运行,​​因此我一次只显示一个片段,因此我使用活动中的FragmentManager“交换”片段。这件事也很好。问题是这个问题: - 我第一次显示包含此自定义视图的Fragment时,它工作正常 - 然后,我展示了另一个碎片。 - 然后,我想再次显示包含自定义视图的Fragment。此时,再次调用onCreateView(请参阅下面的代码)并且它可以创建自定义视图,但这次,未调用自定义视图的onMeasure方法,因此应用程序崩溃,因为无法检索维度。

有谁知道为什么?我认为第二次没有解析布局,因此不计算视图的尺寸(或者我误解了某些东西......)

我怎样才能让它发挥作用?我不明白为什么只在第一次调用onMeasure而不是之后。

感谢您的帮助!

0 个答案:

没有答案