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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月18日 00时56分17秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Table 'mysql.user' doesn't exist
2019-04-30
mysql通过frm文件查找表结构定义
2019-04-30
如何在删除ibdata1和ib_logfile的情况下恢复MySQL数据库
2019-04-30
oracle随机数的产生
2019-04-30
oracle分级汇总rollup
2019-04-30
oracle数据库translate函数
2019-04-30
oracle修改日期的显示方式
2019-04-30
inotify的安装
2019-04-30
mysqladmin创建数据库
2019-04-30
DbUtil的介绍使用
2019-04-30
DbUtil异步更新AsyncQueryRunner
2019-04-30
java判断中文汉字工具类
2019-04-30
DbUtils里的ResultSetHandler处理器应用
2019-04-30
Apache WEB服务器启用了OPTIONS方法
2019-04-30
配置文件中的数据库密码加密
2019-04-30
tailf报错limit of inotify watches was reached
2019-04-30
Solr控制台索引维护-删除索引
2019-04-30
ping结果的相关知识点,tracert命令验证
2019-04-30