Activity和Fragment生命周期之间的关系

来源:互联网 发布:图片去码软件 编辑:程序博客网 时间:2024/04/30 12:54
第一个Activity的布局
/**  * MainActivity布局xml文件  */<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="fill_parent"    android:layout_height="fill_parent">    <Button        android:id="@+id/button"        android:text="开启第二个Activity"        android:layout_gravity="center"        android:layout_width="wrap_content"        android:layout_height="wrap_content"></Button>    <LinearLayout        android:id="@+id/linearlayout"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical"        android:background="#339999">    </LinearLayout></LinearLayout>

第二个Activity的布局

<?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:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.bwie.fragment.SecondActivity"    android:orientation="vertical">    <Button        android:id="@+id/button_finish"        android:text="finish"        android:layout_gravity="center"        android:layout_width="wrap_content"        android:layout_height="wrap_content"></Button>    <LinearLayout        android:id="@+id/linearlayout"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical"        android:background="#339999">    </LinearLayout></LinearLayout>


----------------------------------------------------------------------------------------------------------------------

接下来是第一个Activity中的代码

public class MainActivity extends AppCompatActivity {    private static final String LOG_TAG ="MainActivity";    private Button mButton;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Log.w(LOG_TAG, "==============onCreate()");        FirstFragment firstFragment = new FirstFragment();        android.support.v4.app.FragmentManager supportFragmentManager = getSupportFragmentManager();        android.support.v4.app.FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();        fragmentTransaction.add(R.id.linearlayout,firstFragment,"firstFragment");        fragmentTransaction.commit();        mButton = (Button) findViewById(R.id.button);        mButton.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Log.w(LOG_TAG, "------------------mButton onClick-------------------");                startActivity(new Intent(MainActivity.this, SecondActivity.class));            }        });    }    @Override    protected void onStart() {        super.onStart();        Log.w(LOG_TAG, "==============onStart()");    }    @Override    protected void onRestart() {        super.onRestart();        Log.w(LOG_TAG, "==============onRestart()");    }    @Override    protected void onResume() {        super.onResume();        Log.w(LOG_TAG, "==============onResume()");    }    @Override    protected void onPause() {        super.onPause();        Log.w(LOG_TAG, "==============onPause()");    }    @Override    protected void onStop() {        super.onStop();        Log.w(LOG_TAG, "==============onStop()");    }    @Override    protected void onDestroy() {        super.onDestroy();        Log.w(LOG_TAG, "==============onDestroy()");    }}

第二个Activity里面的代码

public class SecondActivity extends AppCompatActivity {    private static final String LOG_TAG ="SecondActivity";    private Button mButton;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_second);        Log.w(LOG_TAG, "==============onCreate()");        SecondFragment secondFragment = new SecondFragment();        android.support.v4.app.FragmentManager supportFragmentManager = getSupportFragmentManager();        android.support.v4.app.FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();        fragmentTransaction.add(R.id.linearlayout,secondFragment,"secondFragment");        fragmentTransaction.commit();        mButton = (Button) findViewById(R.id.button_finish);        mButton.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Log.w(LOG_TAG, "------------------mButton onClick-------------------");                finish();            }        });    }    @Override    protected void onStart() {        super.onStart();        Log.w(LOG_TAG, "==============onStart()");    }    @Override    protected void onRestart() {        super.onRestart();        Log.w(LOG_TAG, "==============onRestart()");    }    @Override    protected void onResume() {        super.onResume();        Log.w(LOG_TAG, "==============onResume()");    }    @Override    protected void onPause() {        super.onPause();        Log.w(LOG_TAG, "==============onPause()");    }    @Override    protected void onStop() {        super.onStop();        Log.w(LOG_TAG, "==============onStop()");    }    @Override    protected void onDestroy() {        super.onDestroy();        Log.w(LOG_TAG, "==============onDestroy()");    }}
---------------------------------------------------------------------------------------

接下来是第一个Fragment里面的代码

public class FirstFragment extends Fragment {    private static final String LOG_TAG = "FirstFragment";    private static final String ARG_PARAM1 = "param1";    private static final String ARG_PARAM2 = "param2";    private String mParam1;    private String mParam2;    public FirstFragment() {    }    @Override    public void onAttach(Activity activity) {        super.onAttach(activity);        Log.w(LOG_TAG, "onAttach...");    }    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Log.w(LOG_TAG, "onCreate...");        if (getArguments() != null) {            mParam1 = getArguments().getString(ARG_PARAM1);            mParam2 = getArguments().getString(ARG_PARAM2);        }    }    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,                             Bundle savedInstanceState) {        Log.w(LOG_TAG, "onCreateView...");        return inflater.inflate(R.layout.fm_item, container, false);    }    @Override    public void onActivityCreated(Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        Log.w(LOG_TAG, "onActivityCreated...");    }    @Override    public void onStart() {        super.onStart();        Log.w(LOG_TAG, "onStart...");    }    @Override    public void onResume() {        super.onResume();        Log.w(LOG_TAG, "onResume...");    }    @Override    public void onPause() {        super.onPause();        Log.w(LOG_TAG, "onPause...");    }    @Override    public void onStop() {        super.onStop();        Log.w(LOG_TAG, "onStop...");    }    @Override    public void onDestroyView() {        super.onDestroyView();        Log.w(LOG_TAG, "onDestroyView...");    }    @Override    public void onDestroy() {        super.onDestroy();        Log.w(LOG_TAG, "onDestroy...");    }    @Override    public void onDetach() {        super.onDetach();        Log.w(LOG_TAG, "onDetach...");    }}
最后是第二个Fragment里面的代码

public class SecondFragment extends Fragment {    private static final String LOG_TAG = "SecondFragment";    private static final String ARG_PARAM1 = "param1";    private static final String ARG_PARAM2 = "param2";    private String mParam1;    private String mParam2;    public SecondFragment() {    }    @Override    public void onAttach(Activity activity) {        super.onAttach(activity);        Log.w(LOG_TAG, "onAttach...");    }    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Log.w(LOG_TAG, "onCreate...");        if (getArguments() != null) {            mParam1 = getArguments().getString(ARG_PARAM1);            mParam2 = getArguments().getString(ARG_PARAM2);        }    }    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,                             Bundle savedInstanceState) {        Log.w(LOG_TAG, "onCreateView...");        return inflater.inflate(R.layout.fm_item, container, false);    }    @Override    public void onActivityCreated(Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        Log.w(LOG_TAG, "onActivityCreated...");    }    @Override    public void onStart() {        super.onStart();        Log.w(LOG_TAG, "onStart...");    }    @Override    public void onResume() {        super.onResume();        Log.w(LOG_TAG, "onResume...");    }    @Override    public void onPause() {        super.onPause();        Log.w(LOG_TAG, "onPause...");    }    @Override    public void onStop() {        super.onStop();        Log.w(LOG_TAG, "onStop...");    }    @Override    public void onDestroyView() {        super.onDestroyView();        Log.w(LOG_TAG, "onDestroyView...");    }    @Override    public void onDestroy() {        super.onDestroy();        Log.w(LOG_TAG, "onDestroy...");    }    @Override    public void onDetach() {        super.onDetach();        Log.w(LOG_TAG, "onDetach...");    }    }
-------------------------------------------------------------------------------------------

最后是运行结果:

1、第一次打开以后:1.com.example.kuguan.anlearning W/MainActivity﹕ ==============onCreate()2.com.example.kuguan.anlearning W/FirstFragment﹕ onAttach...3.com.example.kuguan.anlearning W/FirstFragment﹕ onCreate...4.com.example.kuguan.anlearning W/FirstFragment﹕ onCreateView...5.com.example.kuguan.anlearning W/FirstFragment﹕ onActivityCreated...6.com.example.kuguan.anlearning W/MainActivity﹕ ==============onStart()7.com.example.kuguan.anlearning W/FirstFragment﹕ onStart...8.com.example.kuguan.anlearning W/MainActivity﹕ ==============onResume()9.com.example.kuguan.anlearning W/FirstFragment﹕ onResume...  2、点击MainActivity中的按钮“打开第二个Activity”以后:1.com.example.kuguan.anlearning W/MainActivity﹕ ----------------mButton onClick-----------------2.com.example.kuguan.anlearning W/FirstFragment﹕ onPause...3.com.example.kuguan.anlearning W/MainActivity﹕ ==============onPause()4.com.example.kuguan.anlearning W/SecondFragment﹕ onAttach...5.com.example.kuguan.anlearning W/SecondFragment﹕ onCreate...6.com.example.kuguan.anlearning W/SecondFragment﹕ onCreateView...7.com.example.kuguan.anlearning W/SecondFragment﹕ onActivityCreated...8.com.example.kuguan.anlearning W/SecondActivity﹕ ==============onStart()9.com.example.kuguan.anlearning W/SecondFragment﹕ onStart...10.com.example.kuguan.anlearning W/SecondActivity﹕ ==============onResume()11.com.example.kuguan.anlearning W/SecondFragment﹕ onResume...12.com.example.kuguan.anlearning W/FirstFragment﹕ onStop...13.com.example.kuguan.anlearning W/MainActivity﹕ ==============onStop()3、点击SecondActivity的按钮“finish”之后:1.com.example.kuguan.anlearning W/SecondActivity﹕ -----------------mButton onClick------------------2.com.example.kuguan.anlearning W/SecondFragment﹕ onPause...3.com.example.kuguan.anlearning W/SecondActivity﹕ ==============onPause()4.com.example.kuguan.anlearning W/MainActivity﹕ ==============onRestart()5.com.example.kuguan.anlearning W/MainActivity﹕ ==============onStart()6.com.example.kuguan.anlearning W/FirstFragment﹕ onStart...7.com.example.kuguan.anlearning W/MainActivity﹕ ==============onResume()8.com.example.kuguan.anlearning W/FirstFragment﹕ onResume...9.com.example.kuguan.anlearning W/SecondFragment﹕ onStop...10.com.example.kuguan.anlearning W/SecondActivity﹕ ==============onStop()11.com.example.kuguan.anlearning W/SecondFragment﹕ onDestroyView...12.com.example.kuguan.anlearning W/SecondFragment﹕ onDestroy...13.com.example.kuguan.anlearning W/SecondFragment﹕ onDetach...14.com.example.kuguan.anlearning W/SecondActivity﹕ ==============onDestroy()4、点击back键使MainActivity退到后台:1.com.example.kuguan.anlearning W/FirstFragment﹕ onPause...2.com.example.kuguan.anlearning W/MainActivity﹕ ==============onPause()3.com.example.kuguan.anlearning W/FirstFragment﹕ onStop...4.com.example.kuguan.anlearning W/MainActivity﹕ ==============onStop()5.com.example.kuguan.anlearning W/FirstFragment﹕ onDestroyView...6.com.example.kuguan.anlearning W/FirstFragment﹕ onDestroy...7.com.example.kuguan.anlearning W/FirstFragment﹕ onDetach...8.com.example.kuguan.anlearning W/MainActivity﹕ ==============onDestroy()5、在MianActivity显示的时候,按HOME键:1.com.example.kuguan.anlearning W/FirstFragment﹕ onPause...2.com.example.kuguan.anlearning W/MainActivity﹕ ==============onPause()3.com.example.kuguan.anlearning W/FirstFragment﹕ onStop...4.com.example.kuguan.anlearning W/MainActivity﹕ ==============onStop()6、然后再点击Icon打开:1.com.example.kuguan.anlearning W/MainActivity﹕ ==============onRestart()2.com.example.kuguan.anlearning W/MainActivity﹕ ==============onStart()3.com.example.kuguan.anlearning W/FirstFragment﹕ onStart...4.com.example.kuguan.anlearning W/MainActivity﹕ ==============onResume()5.com.example.kuguan.anlearning W/FirstFragment﹕ onResume...






1 0