我有一个继承自 SurfaceView 的自定义视图。这个视图主要是基于绘图的,它需要知道视图的宽度/高度。尺寸是在 onMeasure 方法期间计算的,并且工作正常。
在 onCreateView 方法期间,我在 Fragment 中膨胀的布局中使用此视图:
@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 只在第一次而不是之后被调用。
谢谢您的帮助!