坚持住你的坚持,成功就在拐弯处。
/**
* 生命周期的代码
*/
public class LifecycleFragment extends Fragment {
public static final String TAG = "LifecycleFragment";
@Override
public void onAttach(Context context) {
super.onAttach(context);
Log.d(TAG, "--onAttach--");
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "--onCreate--");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d(TAG, "--onCreateView--");
TextView tv = new TextView(getActivity());
tv.setText("测试 fragment");
tv.setGravity(Gravity.CENTER);
tv.setTextSize(36);
return tv;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.d(TAG, "--onActivityCreated--");
}
@Override
public void onStart() {
super.onStart();
Log.d(TAG, "--onStart--");
}
@Override
public void onResume() {
super.onResume();
Log.d(TAG, "--onResume--");
}
@Override
public void onPause() {
super.onPause();
Log.d(TAG, "--onPause--");
}
@Override
public void onStop() {
super.onStop();
Log.d(TAG, "--onStop--");
}
@Override
public void onDestroyView() {
super.onDestroyView();
Log.d(TAG, "--onDestroyView--");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "--onDestroy--");
}
@Override
public void onDetach() {
super.onDetach();
Log.d(TAG, "--onDetach--");
}
public LifecycleFragment() {
}
}
package com.test.lifecyclefragment.activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import com.test.lifecyclefragment.R;
import com.test.lifecyclefragment.fragment.LifecycleFragment;
import com.test.lifecyclefragment.fragment.SeconFragment;
/**
* Fragment的生命周期
*
*/
public class MainActivity extends AppCompatActivity {
Button startActivity,addFragment,backFragment,replaceFragment,finish;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView(); //初始化控件
initListener(); //初始化监听事件
}
private void initListener() {
startActivity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//启动对话框风格Activity
startActivity(new Intent(MainActivity.this,SecondActivity.class));
}
});
//添加 Fragment
addFragment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LifecycleFragment fragment = new LifecycleFragment();
getFragmentManager().beginTransaction().replace(R.id.container,fragment).commit();
}
});
//将替换前的Fragment 添加到 Back栈中
backFragment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SeconFragment secFragment = new SeconFragment();
getFragmentManager().beginTransaction()
.replace(R.id.container, secFragment)
.addToBackStack("aa")// 将替换前的Fragment添加到Back栈
.commit();
}
});
//替换 Fragment
replaceFragment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SeconFragment secFragment = new SeconFragment();
getFragmentManager().beginTransaction().replace(R.id.container, secFragment).commit();
}
});
// 为finish按钮绑定事件监听器
finish.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View source)
{
// 结束该Activity
MainActivity.this.finish();
}
});
}
private void initView() {
startActivity = (Button) findViewById(R.id.start_dialog_activity);
addFragment = (Button) findViewById(R.id.addFragment);
backFragment = (Button) findViewById(R.id.backFragment);
replaceFragment = (Button) findViewById(R.id.replaceFragment);
finish = (Button) findViewById(R.id.finish);
}
}
/**
* 对话框风格 Activity
*/
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(getApplication());
tv.setText("对话框风格Activity");
setContentView(tv);
}
}
public class SeconFragment extends Fragment{
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
TextView tv = new TextView(getActivity());
tv.setText("第二个 Fragment");
tv.setGravity(Gravity.CENTER_HORIZONTAL);
tv.setTextSize(36);
tv.setTextColor(Color.BLUE);
return tv;
}
}
点击 加载目标Fragment 按钮时会执行 –onAttach–,–onCreate–, –onCreateView–,–onActivityCreated–,–onStart–,-onResume–方法.
接着点击 启动对话框Activity的按钮 当前的Activity会进入暂停状态,该 Fragment也会进入暂停状态,会执行 –onPause–方法. 点击返回键,关闭对话框Activity. Fragment会执行onResume()方法.
继续点击 替换目标Fragment,并加入Back栈中 的按钮
–onPause– –onStop– –onDestroyView–方法.
点击 替换目标Fragment 按钮之后 执行 –onPause–, –onStop–,–onDestroyView–, –onDestroy–,–onDetach– 该Fragment 将会被完全结束,Fragment将进入”销毁”状态.
Fragment 的生命周期中,如下方法被系统回调.
- onAttach(Activity) 当Fragment被添加到 Activity时,被回调.该方法只会被调用一次.
- onCreate(Bundle) 创建Fragment 时被回调,该方法只会被调用一次.
- onCreateView(LayoutInflater, ViewGroup, Bundle) ;每次创建,绘制Fragment的View组件时回调该方法,Fragment将会显示该方法返回的view组件.
- onActivityCreated(Bundle) 当Fragment所在的Activity 被启动完成后回调该方法.
- onStart() 启动Fragment 时被回调.
- onResume() 恢复Fragment时被回调, onStart()方法后一定会回调 onResume()方法.
- onPause() 暂停时Fragment时被回调.
- onStop(); 停止Fragment 时被回调.
- onDestroyView() 销毁 该Fragment 所包含的View 组件时调用.
- onDestroy() 销毁 Fragment时被回调. 该方法只会调用一次.
- onDetach() 将该 fragment 从Activity中 被删除,被替换完成时,回调该方法. onDestroy方法后一定会回调 onDetach()方法.该方法只会调用一次.
962

被折叠的 条评论
为什么被折叠?



