2

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;
}

このアプリケーションは電話で実行されるため、一度に 1 つのフラグメントのみを表示するため、アクティビティで FragmentManager を使用してフラグメントを「交換」します。このこともうまく機能しています。問題はこれです: - このカスタム ビューを含む Fragment を初めて表示すると、正常に動作します - 次に、別の Fragment を表示します。- 次に、カスタム ビューを含む Fragment を再度表示したい。この時点で onCreateView が再度呼び出され (以下のコードを参照)、カスタム ビューを作成できますが、今回はカスタム ビューの onMeasure メソッドが呼び出されないため、ディメンションを取得できないためにアプリケーションがクラッシュします。

誰かが理由を知っていますか?2回目はレイアウトが解析されていないため、ビューのサイズが計算されていないと思います(または、何か誤解しているかもしれません...)

どうすればそれを機能させることができますか?なぜ onMeasure が初めて呼び出され、その後では呼び出されないのか理解できません。

ご協力ありがとうございました!

4

0 に答える 0