フラグメントを動的に置き換えるアクティビティがあります。
private void goToFragment(Fragment newFragment, String tag) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.fragment_container, newFragment, tag);
ft.addToBackStack(null);
ft.commit();
}
ここで、フラグメント内のビューにアクセスして、 を呼び出した直後に (アクティビティに保存した) データを配置できるようにしますgoToFragment
。
問題は、onCreateView
少なくとも私の理解では、フラグメントが完全にレンダリングされる前にフラグメントが呼び出されないことです。
フラグメント内のをオーバーライドすることはそれを行う1つの方法であることは知っていますonAttach(Activity activity)
が、それを自分のアクティビティに具体的にキャストする必要があります-フラグメントが特定のアクティビティに依存することは悪い習慣だと考えているため、それを避けたいだけです.
私が見る限り、Fragment
(サブジェクトとして)リスナーは実装されていません。
そのため、独自のリスナーを作成し (オブザーバー パターンを使用してフラグメントをサブジェクトにし、アクティビティをオブザーバーにする)、onCreateView
oronAttach
が完了するたびにそれを呼び出し、最後にそのデータを使用してフラグメントにコールバックする必要があると考えています。設定する必要があります。ただし、いくつかのフラグメントに対してこれを行う必要があるため、フラグメントごとにリスナーを作成する必要があり、これも悪いと思います。
これを行うためのより良い/簡単な方法はありますか?