04-17 11:14:49.734 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onAttach: A
04-17 11:14:49.734 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onCreate: A
04-17 11:14:49.735 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onCreateView: A
04-17 11:14:49.744 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onViewCreated: A
04-17 11:14:49.744 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onActivityCreated: A
04-17 11:14:49.744 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onStart: A
04-17 11:14:49.746 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onResume: A
04-17 11:14:49.754 7206-7206/com.example.benjamin.rxjavaproject I/HwPointEventFilter: support AFT
04-17 11:14:49.790 7206-7237/com.example.benjamin.rxjavaproject I/OpenGLRenderer: Initialized EGL, version 1.4
04-17 11:14:49.796 7206-7237/com.example.benjamin.rxjavaproject W/linker: /vendor/lib64/libhwuibp.so: unused DT entry: type 0xf arg 0xe3a
04-17 11:14:49.802 7206-7206/com.example.benjamin.rxjavaproject W/art: Before Android 4.1, method int android.support.v7.widget.ListViewCompat.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView
04-17 11:14:52.654 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onAttach: B
04-17 11:14:52.654 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onCreate: B
04-17 11:14:52.655 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onPause: A
04-17 11:14:52.655 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onStop: A
04-17 11:14:52.655 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onDestroyView: A
04-17 11:14:52.656 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onCreateView: B
04-17 11:14:52.665 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onViewCreated: B
04-17 11:14:52.665 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onActivityCreated: B
04-17 11:14:52.665 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onStart: B
04-17 11:14:52.665 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onResume: B
04-17 11:14:54.993 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onPause: B
04-17 11:14:54.994 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onStop: B
04-17 11:14:54.994 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onDestroyView: B
04-17 11:14:54.994 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onDestroy: B
04-17 11:14:54.994 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onDetach: B
04-17 11:14:54.994 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onCreateView: A
04-17 11:14:54.999 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onViewCreated: A
04-17 11:14:54.999 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onActivityCreated: A
04-17 11:14:54.999 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onStart: A
04-17 11:14:54.999 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onResume: A
RxFragmentA rxFragmentA = new RxFragmentA();
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.rl_fragment_container, rxFragmentA)
.commit();
rxFragmentA.setOnSwitchFragmentListener(new ISwitchFragmentListener() {
@Override
public void switchFragment(BaseRxFragment fragment) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.rl_fragment_container,fragment)
.addToBackStack(fragment.getClass().getSimpleName())
.commit();
fragment.setOnSwitchFragmentListener(new ISwitchFragmentListener() {
@Override
public void switchFragment(BaseRxFragment fragment) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.rl_fragment_container,fragment)
.addToBackStack(fragment.getClass().getSimpleName())
.commit();
}
@Override
public void backStack() {
getSupportFragmentManager()
.popBackStack();
}
});
}
@Override
public void backStack() {
getSupportFragmentManager()
.popBackStack();
}
});
A. 当添加到fragmentStack, fragment被移除出栈才会走onDestory及onDetach 方法。
B. fragmentA 入栈并打开fragmentB,
04-17 11:14:52.654 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onAttach: B
04-17 11:14:52.654 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onCreate: B
04-17 11:14:52.655 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onPause: A
04-17 11:14:52.655 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onStop: A
04-17 11:14:52.655 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onDestroyView: A
04-17 11:14:52.656 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onCreateView: B
04-17 11:14:52.665 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onViewCreated: B
04-17 11:14:52.665 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onActivityCreated: B
04-17 11:14:52.665 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onStart: B
04-17 11:14:52.665 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onResume: B
B. fragmentB 出栈, 回到fragmentA
04-17 11:14:54.993 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onPause: B
04-17 11:14:54.994 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onStop: B
04-17 11:14:54.994 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onDestroyView: B
04-17 11:14:54.994 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onDestroy: B
04-17 11:14:54.994 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentB: onDetach: B
04-17 11:14:54.994 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onCreateView: A
04-17 11:14:54.999 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onViewCreated: A
04-17 11:14:54.999 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onActivityCreated: A
04-17 11:14:54.999 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onStart: A
04-17 11:14:54.999 7206-7206/com.example.benjamin.rxjavaproject I/RxFragmentA: onResume: A
小结
Activity, Fragment 实例创建才会走 onCreate方法的。