安卓Activity与Fragement

安卓应用的多个Activity组成Activity栈,当前活动的Activity位于栈顶。

1.LauncherActivity:继承于ListActivity,需要为其设置Adapter,

并重写Intent intentForPosition(int position)方法,该方法根据不同列表项返回不同的Intent(用于启动不同的Activity).

2.ExpandableListActivity:可展开的Activity,需要为该Activity传入ExpandableListAdapter对象,接下来ExpandableListActivity

将会生成一个显示可展开列表的窗口。

3.PreferenceActivity:如果应用程序中包含的某个Activity专门用于设置选项参数,可以使用该类。该类不再使用普通的界面布局文件,而是使用选项设置的布局文件

Activity的启动与关闭:

启动:startActivity(Intent intent);

startActivityForResult(Intent intent,int requestCode);程序可以获取到新启动Activity的返回结果,通过写onActivityResult()方法来获取返回的内容。

关闭:finish();关闭当前Activity

finishActivity(int requestCode);结束以指定code启动的Activity

使用Bundle在Activity之间交换数据:

Bundle是一个简单的数据携带包,该Bundle对象有如下方法来存入数据:putXxx(String key , Xxx data);向Bundle中放入Int、Long等各种类型的数据。

putSerializable(String key , Serializable data);向Bundle中放入一个可序列化的对象

如下方法用来取出Bundle数据携带包里的数据:

getXxx(String key);从Bundle中取出Int、Long等各种类型的数据。

getSerializable(String key , Serializable data);从Bundle中取出一个可序列化的对象

使用Bundle在Activity之间交换数据:

putExtras(Bundle data);向Intent中放入需要携带的数据包

Bundle getExtras();取出Intent中携带的数据包

putExtra(String name,Xxx value);向Intent中按键值对存入数据

getXxxExtra(String name);从Intent中按key值取出指定类型数据

Activity的生命周期与加载模式

Activity大致会经过如下四种状态:

运行状态:当前Activity位于前台,用户可见,可获得焦点

暂停状态:其他Activity位于前台,该Activity依然可见但是不能获得焦点

停止状态:该Actvity不可见,失去焦点

销毁状态:该Activity结束,或Activity所在的进程被结束

生命周期:onCreate(Bundle savedStatus);创建Activity时被回调,此方法只会被调用一次。

onStart();启动Activity时被回调。

onRestart();重新启动Activity时被调用

onResume();恢复Activity时被调用,在onStart()方法之后一定会被调用

onPause();暂停时被调用

onStop();停止时被调用

onDestory();销毁时被回调。

加载模式:Activity由Task管理,当启动一个应用时安卓会为其创建一个Task,配置Activity时可指定android:launchMode属性,该属性用于配置该Activity的加载模式,支持如下4种属性值:

standard:标准模式,默认的加载模式,使用此种模式时系统会为Activity创建一个新的实例,并将该Activity添加到当前Task栈顶,系统不会为其创建新的Task.

singleTop:Task栈顶单例模式,栈顶Activity只有一个实例,不会在为其创建新的实例,如果要启动的Activity不是栈顶的,则会为其再创建新的实例。

singleTask:Task内单例模式,采用这种加载模式的Activity在同一个Task内只有一个实例,如果将要启动的Activity不存在,系统会创建目标Activity,并将其加入栈顶;如果要启动的Activity已经位于栈顶则不会在为其创建新的实例;如果目标Activity不位于栈顶系统会将位于该Activity上的所有Activity移出Task栈,从而使目标Activity转入栈顶

singleInstance:全局单例模式,无论在哪个Task中启动Activity都只会创建一个目标Activity实例,并且使用一个全新的Task栈来管理该Activity实例。

 

Fragement即为片段,是安卓3.0之后才出现的,为了在3.0以前的手机也能使用,通常导入android.support.v4.app.Fragment,这个包中同时有FragmentActivity,都是为了兼容安卓3.0之前的版本,当然使用FragmentActivity时获取FragmentManager的方法有所不同,为getSupportFragmentManager(),Fragment要依托于Activity才能使用,Fragement的生命周期会受它所依托的Activity的生命周期的影响。

创建Fragement:需要覆写如下三种方法:

1.onCreate();在系统创建Fragement对象后就会回调该方法

2.onCreateView();Fragement绘制界面组件时会回调该方法,会返回该Fragement所显示的View

3.onPause();用户离开时回调

Fragement与Activity通信:

1.将Fragement添加到Activity中:在布局文件中添加,name属性用来是定Fragement的实现类;     在java代码中通过FragementTransaction对象的add()方法来添加。

2.获取Fragement或Activity:Fragement获取它所在的Activity:调用getActivity()方法

Activity获取它所包含的Fragement:调用Activity的FragementManager的findFragementById(int id)或findFragementByTag(String tag)方法即可获取指定的Fragement。

3.传递数据:Activity向Fragement传递数据:调用Fragement的setArguements(Bundle Bundle)方法;   Fragement向Activity传递数据:在Fragement中定义一个内部回调接口,在让包含该Fragement的Activity实现该回调接口,这样Fragement即可调用该回调方法将数据传给Activity。

Fragement管理与Fragement事务:

1.Activity管理Fragement主要依靠FragementManager,FragementManager可以用来获取指定Fragement,还可以调用popBackStack()将Fragement从后台栈中弹出,还可以调用addOnBackStackChangeListener()注册一个监听器监听后台栈的变化。

2.添加、删除、替换Fragement 需要借助FragementTransaction对象的add();remove();replace();等方法,最后需要调用commit()方法提交事务,在提交之前也可调用addToBackStack()将事务添加到Back栈,这样按返回键就可以回到改变之前的Fragment,获取FragmentTransaction可使用FragementManager的beginTransaction()方法。

Fragment生命周期:

205111_eFJY_2896911.png

205125_uOTj_2896911.png205139_eYkw_2896911.png

Fragment结合ViewPager实现界面滑动:

layout管理器允许页面可以左右滑动,可以实现PagerAdapter接口来显示该效果,ViewPager很多时候会结合Fragment一起使用,此时可以实现FragmentPagerAdapter或FragmentStatePagerAdapter

                                                          -------------------这些博客都是我之前在学习过程中自书中摘出的重点,以及一些前辈总结的经验,外加一些自己的感悟,如果有前辈看到,有不对的地方希望大家指出,非常感谢。

转载于:https://my.oschina.net/qinqinyuan/blog/743893

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值