当片段第二次显示时,Android自定义视图会释放维度

当片段第二次显示时,Android自定义视图会释放维度,android,android-fragments,custom-view,onmeasure,Android,Android Fragments,Custom View,Onmeasure,我有一个从SurfaceView继承的自定义视图。此视图主要基于图形,需要知道视图的宽度/高度。尺寸是在onMeasure方法中计算的,它工作正常 在onCreateView方法期间,我在片段中膨胀的布局中使用此视图: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstance){ View v = inflater.inflate(R.layo

我有一个从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“交换”片段。这东西也很好用。问题是: -第一次显示包含此自定义视图的片段时,它工作正常 -然后,我展示另一个片段。 -然后,我想再次显示包含自定义视图的片段。此时,再次调用onCreateView(请参见下面的代码),它可以创建自定义视图,但这次,不会调用自定义视图的onMeasure方法,因此,应用程序会崩溃,因为无法检索维度

有人知道为什么吗?我认为布局没有被第二次解析,因此视图的尺寸没有被计算(或者我可能误解了什么…)

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


谢谢你的帮助

嗨,面对同样的问题。第二次启动时,片段内根视图的宽度=0。这也意味着没有正确绘制任何内容。你找到解决方案了吗(即使问题已经6年了:D)