Fragment详解(二)--->生命周期详解
发布日期:2021-06-30 11:13:47 浏览次数:2 分类:技术文章

本文共 6189 字,大约阅读时间需要 20 分钟。

MainActivity如下:

package cc.testsimplefragment1;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;/** * Demo描述: * Fragment生命周期 *  * 测试方法: * 在界面中从上至下点击各个按钮 *  * 参考资料: * 1 Android疯狂讲义(第二版) * 2 http://blog.163.com/supered_yang@126/blog/static/4126004120131710545228/ * 3 http://blog.csdn.net/t12x3456/article/details/8104574 *   Thank you very much *  */public class MainActivity extends Activity{	private Button mStartActivityButton;	private Button mAddFragmentButton;	private Button mReplaceAndBackFragmentButton;	private Button mReplaceFragmentButton;	private Button mFinishButton;	@Override	public void onCreate(Bundle savedInstanceState){		super.onCreate(savedInstanceState);		setContentView(R.layout.main);		init();	}		private void init(){		mStartActivityButton = (Button) findViewById(R.id.startActivityButton);		mStartActivityButton.setOnClickListener(new ClickListenerImpl());				mAddFragmentButton = (Button) findViewById(R.id.addFragmentButton);		mAddFragmentButton.setOnClickListener(new ClickListenerImpl());				mReplaceAndBackFragmentButton = (Button) findViewById(R.id.replaceAndBackFragmentButton);		mReplaceAndBackFragmentButton.setOnClickListener(new ClickListenerImpl());				mReplaceFragmentButton = (Button) findViewById(R.id.replaceFragmentButton);		mReplaceFragmentButton.setOnClickListener(new ClickListenerImpl());				mFinishButton = (Button) findViewById(R.id.finishButton);		mFinishButton.setOnClickListener(new ClickListenerImpl());	}		private class ClickListenerImpl implements OnClickListener{		@Override		public void onClick(View view) {			switch (view.getId()) {			case R.id.startActivityButton:				Intent intent = new Intent(MainActivity.this, DialogStyleActivity.class);				startActivity(intent);				break;			case R.id.addFragmentButton:				TestLifecycleFragment testLifecycleFragment = new TestLifecycleFragment();				getFragmentManager()				.beginTransaction()				.add(R.id.linearLayoutContainer, testLifecycleFragment)				.commit();				break;			case R.id.replaceAndBackFragmentButton:				AnotherFragment anotherFragment1 = new AnotherFragment();				getFragmentManager()				.beginTransaction()				.replace(R.id.linearLayoutContainer, anotherFragment1)				.addToBackStack("test")				.commit();				break;			case R.id.replaceFragmentButton:				AnotherFragment anotherFragment2 = new AnotherFragment();				getFragmentManager()				.beginTransaction()				.replace(R.id.linearLayoutContainer, anotherFragment2)				.commit();				break;			case R.id.finishButton:				finish();				break;			default:				break;			}					}			}}

TestLifecycleFragment如下:

package cc.testsimplefragment1;import android.app.Activity;import android.app.Fragment;import android.os.Bundle;import android.util.Log;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;public class TestLifecycleFragment extends Fragment {	final String TAG = "log";	/**	 * 该Fragment被添加到Activity时调用.	 * 只会被调用一次	 */	@Override	public void onAttach(Activity activity) {		super.onAttach(activity);		Log.d(TAG, "-------onAttach------");	}	/**	 * 创建该Fragment时调用.	 * 只会被调用一次	 */	@Override	public void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		Log.d(TAG, "-------onCreate------");	}	/**	 * 每次创建和绘制该Fragment的View组件时调用.	 * Fragment会显示该方法返回的View	 */	@Override	public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle data) {		Log.d(TAG, "-------onCreateView------");		TextView tv = new TextView(getActivity());		tv.setGravity(Gravity.CENTER_HORIZONTAL);		tv.setText("这是一个用于测试的Fragment");		tv.setTextSize(40);		return tv;	}	/**	 * 当Fragment所在的Activity被启动完成后	 * 调用该方法	 */	@Override	public void onActivityCreated(Bundle savedInstanceState) {		super.onActivityCreated(savedInstanceState);		Log.d(TAG, "-------onActivityCreated------");	}	/**	 * 启动Fragment时候调用该方法	 */	@Override	public void onStart() {		super.onStart();		Log.d(TAG, "-------onStart------");	}	/**	 * 恢复Fragment时候调用该方法.	 * onStart()方法后一定会调用该onResume()方法	 */	@Override	public void onResume() {		super.onResume();		Log.d(TAG, "-------onResume------");	}	    /**     * 暂停Fragment时候调用该方法     */	@Override	public void onPause() {		super.onPause();		Log.d(TAG, "-------onPause------");	}	/**     * 停止Fragment时候调用该方法     */	@Override	public void onStop() {		super.onStop();		Log.d(TAG, "-------onStop------");	}	/**     * 销毁该Fragment所包含的View调用该方法     */	@Override	public void onDestroyView() {		super.onDestroyView();		Log.d(TAG, "-------onDestroyView------");	}	/**     * 销毁该Fragment时调用该方法     * 该方法只会被调用一次     */	@Override	public void onDestroy() {		super.onDestroy();		Log.d(TAG, "-------onDestroy------");	}	/**     * 将该Fragment从Activity中被删除,替换时调用该方法     * 在onDestroy()方法后一定会调用该onDetach()方法.     * 该方法只会被调用一次     */	@Override	public void onDetach() {		super.onDetach();		Log.d(TAG, "-------onDetach------");	}}

AnotherFragment如下:

package cc.testsimplefragment1;import android.app.Fragment;import android.os.Bundle;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;public class AnotherFragment extends Fragment {	@Override	public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle data) {		TextView textView = new TextView(getActivity());		textView.setGravity(Gravity.CENTER_HORIZONTAL);		textView.setText("另外一个Fragment");		textView.setTextSize(40);		return textView;	}}

DialogStyleActivity如下:

package cc.testsimplefragment1;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;/** * 备注说明: * 该Activity是对话框风格的Activity * 所以需要在配置文件中设置: * android:theme="@android:style/Theme.Holo.Dialog" * */public class DialogStyleActivity extends Activity{	@Override	public void onCreate(Bundle savedInstanceState){		super.onCreate(savedInstanceState);		TextView textView = new TextView(this);		textView.setText("对话框风格的Activity");		setContentView(textView);	}}

main.xml如下:

AndroidManifest.xml如下:

 

转载地址:https://it9527.blog.csdn.net/article/details/12461103 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Fragment详解(一)--->核心基础以及Fragment与Activity传递数据完整示例
下一篇:Fragment详解(三)--->横竖屏幕切换完整示例

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月18日 00时56分17秒