Fragment间切换生命周期方法的回调顺序

时间:2021-04-02 21:18:54

-------- Fragment1默认打开,然后再由Activity打开Fragment2

Fragment1

public class Fragment1 extends Fragment {

    private static final String TAG = Fragment1.class.getSimpleName();

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        Log.i(TAG, "onAttach: 1111111111111111111111");
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i(TAG, "onCreate: 1111111111111111111111111111");
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        Log.i(TAG, "onCreateView: 111111111111111111111111111111");
        return inflater.inflate(R.layout.layout_fm1, container, false);
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        Log.i(TAG, "onViewCreated: 111111111111111111111111111111111");
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        Log.i(TAG, "onActivityCreated: 111111111111111111111111111111111");
    }

    @Override
    public void onStart() {
        super.onStart();
        Log.i(TAG, "onStart: 11111111111111111111111111111111111111");
    }

    @Override
    public void onResume() {
        super.onResume();
        Log.i(TAG, "onResume: 11111111111111111111111111111111111111");
    }

    @Override
    public void onPause() {
        super.onPause();
        Log.i(TAG, "onPause: 11111111111111111111111111111111111");
    }

    @Override
    public void onStop() {
        super.onStop();
        Log.i(TAG, "onStop: 1111111111111111111111111111111");
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        Log.i(TAG, "onDestroyView: 11111111111111111111111111111");
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.i(TAG, "onDestroy: 11111111111111111111111111111111");
    }

    @Override
    public void onDetach() {
        super.onDetach();
        Log.i(TAG, "onDetach: 1111111111111111111111111111");
    }
}

fragment2

public class Fragment2 extends Fragment {

    private static final String TAG = Fragment2.class.getSimpleName();

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        Log.i(TAG, "onAttach: 222222222222222222222222222");
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i(TAG, "onCreate: 22222222222222222222222222");
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        Log.i(TAG, "onCreateView: 222222222222222222222222222");
        return inflater.inflate(R.layout.layout_fm2, container, false);
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        Log.i(TAG, "onViewCreated: 222222222222222222222222222222222222");
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        Log.i(TAG, "onActivityCreated: 222222222222222222222222222222222");
    }

    @Override
    public void onStart() {
        super.onStart();
        Log.i(TAG, "onStart: 2222222222222222222222222222222222222");
    }

    @Override
    public void onResume() {
        super.onResume();
        Log.i(TAG, "onResume: 22222222222222222222222222222222222222222");
    }

    @Override
    public void onPause() {
        super.onPause();
        Log.i(TAG, "onPause: 222222222222222222222222222222222222");
    }

    @Override
    public void onStop() {
        super.onStop();
        Log.i(TAG, "onStop: 22222222222222222222222222222222222222");
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        Log.i(TAG, "onDestroyView: 2222222222222222222222222222222222222");
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.i(TAG, "onDestroy: 22222222222222222222222222222222");
    }

    @Override
    public void onDetach() {
        super.onDetach();
        Log.i(TAG, "onDetach: 22222222222222222222222222222222");
    }
}

fragment1默认打开,然后打开fragment2,最后按底部导航返回键

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.adnonstop.fragmentlifecycler.activity.MainActivity">

    <Button
        android:id="@+id/btn_newfm"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="new fragment" />

    <RelativeLayout
        android:id="@+id/rl_fm_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </RelativeLayout>

</LinearLayout>

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
    }

    private void initView() {


        getSupportFragmentManager().beginTransaction().replace(R.id.rl_fm_container, new Fragment1()).commit();

        Button btnFM = (Button) findViewById(R.id.btn_newfm);
        btnFM.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                getSupportFragmentManager().beginTransaction().replace(R.id.rl_fm_container, new Fragment2()).commit();
            }
        });
    }
}

Fragment的生命周期方法回调


默认打开Fragment1
03-30 13:19:03.281 2355-2355/com.xxx.fragmentlifecycler I/Fragment1: onAttach: 1111111111111111111111
03-30 13:19:03.281 2355-2355/com.xxx.fragmentlifecycler I/Fragment1: onCreate: 1111111111111111111111111111
03-30 13:19:03.282 2355-2355/com.xxx.fragmentlifecycler I/Fragment1: onCreateView: 111111111111111111111111111111
03-30 13:19:03.283 2355-2355/com.xxx.fragmentlifecycler I/Fragment1: onViewCreated: 111111111111111111111111111111111
03-30 13:19:03.283 2355-2355/com.xxx.fragmentlifecycler I/Fragment1: onActivityCreated: 111111111111111111111111111111111
03-30 13:19:03.284 2355-2355/com.xxx.fragmentlifecycler I/Fragment1: onStart: 11111111111111111111111111111111111111
03-30 13:19:03.284 2355-2355/com.xxx.fragmentlifecycler I/Fragment1: onResume: 11111111111111111111111111111111111111
打开Fragment2
03-30 13:19:05.924 2355-2355/com.xxx.fragmentlifecycler I/Fragment2: onAttach: 222222222222222222222222222
03-30 13:19:05.924 2355-2355/com.xxx.fragmentlifecycler I/Fragment2: onCreate: 22222222222222222222222222
03-30 13:19:05.924 2355-2355/com.xxx.fragmentlifecycler I/Fragment1: onPause: 11111111111111111111111111111111111
03-30 13:19:05.924 2355-2355/com.xxx.fragmentlifecycler I/Fragment1: onStop: 1111111111111111111111111111111
03-30 13:19:05.924 2355-2355/com.xxx.fragmentlifecycler I/Fragment1: onDestroyView: 11111111111111111111111111111
03-30 13:19:05.928 2355-2355/com.xxx.fragmentlifecycler I/Fragment1: onDestroy: 11111111111111111111111111111111
03-30 13:19:05.928 2355-2355/com.xxx.fragmentlifecycler I/Fragment1: onDetach: 1111111111111111111111111111
03-30 13:19:05.928 2355-2355/com.xxx.fragmentlifecycler I/Fragment2: onCreateView: 222222222222222222222222222
03-30 13:19:05.928 2355-2355/com.xxx.fragmentlifecycler I/Fragment2: onViewCreated: 222222222222222222222222222222222222
03-30 13:19:05.929 2355-2355/com.xxx.fragmentlifecycler I/Fragment2: onActivityCreated: 222222222222222222222222222222222
03-30 13:19:05.929 2355-2355/com.xxx.fragmentlifecycler I/Fragment2: onStart: 2222222222222222222222222222222222222
03-30 13:19:05.931 2355-2355/com.xxx.fragmentlifecycler I/Fragment2: onResume: 22222222222222222222222222222222222222222
按底部导航返回键
03-30 13:20:53.714 2355-2355/com.xxx.fragmentlifecycler I/Fragment2: onPause: 222222222222222222222222222222222222
03-30 13:20:54.740 2355-2355/com.xxx.fragmentlifecycler I/Fragment2: onStop: 22222222222222222222222222222222222222
03-30 13:20:54.740 2355-2355/com.xxx.fragmentlifecycler I/Fragment2: onDestroyView: 2222222222222222222222222222222222222
03-30 13:20:54.740 2355-2355/com.xxx.fragmentlifecycler I/Fragment2: onDestroy: 22222222222222222222222222222222
03-30 13:20:54.740 2355-2355/com.xxx.fragmentlifecycler I/Fragment2: onDetach: 22222222222222222222222222222222