DialogFragmentライフサイクルの概要
3232 ワード
前の記事ではDialogの使用についてDialogFragmntのいくつかの使用常識について説明しました.ここではDialogFragmentでよく使われるライフサイクル関数について簡単に説明します.呼び出し順序は、onAttach-->onCreate->onCreateDialog--> onCreateView-->onView Created-->onSaveInstancesStateです.
DialogFragmentでActivityの関数を呼び出すことができるように、onAttachにattachのActivityインスタンスが入力されます.
DialogFragmentのスタイルをonCreateで設定します.フルスクリーン表示か、Titlebarを表示するかなどです.
onCreateDialogでdialogリスニング関数を設定します.たとえば、戻りキーのリスニングなどです.
onCreateViewでviewの初期化を行い、savedIsintanceState Bundleデータを解析し、DialogFragmentが回収されて再構築されるデータ処理ロジックを処理する.
onView CreatedはonCreateViewの直後に実行され、アニメーション効果などのインタフェースの初期化が完了した後の操作を実行します.
onSaveInstanceStateにページの再構築に必要なデータを保存します.
DialogFragmentでActivityの関数を呼び出すことができるように、onAttachにattachのActivityインスタンスが入力されます.
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
historyViewClickListener = (OnHistoryViewClickListener) activity;
context = activity;
}
DialogFragmentのスタイルをonCreateで設定します.フルスクリーン表示か、Titlebarを表示するかなどです.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(STYLE_NO_FRAME, android.R.style.Theme_Holo_Light); // titlebar,
}
onCreateDialogでdialogリスニング関数を設定します.たとえば、戻りキーのリスニングなどです.
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
doHide();
return true;
}
return false;
}
});
return dialog;
}
onCreateViewでviewの初期化を行い、savedIsintanceState Bundleデータを解析し、DialogFragmentが回収されて再構築されるデータ処理ロジックを処理する.
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = getActivity().getLayoutInflater().inflate(R.layout.atom_flight_history_record_view, container, false);
Injector.inject(this, view);
if (null != savedInstanceState) {
records = (List) savedInstanceState.getSerializable("records");
isShowDays = savedInstanceState.getBoolean("isShowDays", false);
spaceHeight = savedInstanceState.getInt("spaceHeight");
listAdapter = new FlightHistoryListAdapter(context, records, isShowDays);
} else {
listAdapter = new FlightHistoryListAdapter(context, records, isShowDays);
}
return view;
}
onView CreatedはonCreateViewの直後に実行され、アニメーション効果などのインタフェースの初期化が完了した後の操作を実行します.
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
showHistoryAnimation();
}
onSaveInstanceStateにページの再構築に必要なデータを保存します.
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable("records", (Serializable) records);
outState.putBoolean("isShowDays", isShowDays);
outState.putInt("spaceHeight", spaceHeight);
}