在大多数的应用设计中,我们需要实现界面的跳转,如桌面应用程序不同窗体间的跳转、web应用程序不同jsp间的跳转等等,而Android应用的界面跳转,一般是fragment跳转,并不像web应用程序一样简简单单地写个servlet请求就完事,其具体流程稍显复杂:
大体思路一般我们的fragment会处于一个activity中,而我们需要跳转到另一个fragment,那么就可以另外创一个activity,比如我做的用户界面,我创了个UserActivity,要在我们已经有的用户个人界面跳转到一个界面(比如是编辑资料),就先从当前的fragment所在的activity跳转到另一个activity,再由另一个activity控制要跳转去的fragment。
具体实现以个人的一个项目为例:
比如我这里就是底部导航栏中“用户”板块显示的内容,它是在fragment_forth里面,而这个文件和ForthFragment绑定,也就是说这一部分目前属于ForthFragment,而这个fragment属于MainActivity,但是我想让它点击“编辑资料”后跳转到另一个不属于MainActivity的fragment(如果都放到MainActivity,会很冗杂),那么就在相应的鼠标点击事件里面通过intent先让它跳转到另一个叫做UserActivity的地方(还可以带参数,刚好方便我们设定要UserActivity去哪个界面,我这里跳转到edit界面需要的参数是0)
,然后在UserActivity重写onResume方法(什么是onResume方法以及有什么用可以自行CSDN),在这个方法里面通过FragmentTransaction和获取到的id去判断,
,在这里后面需要用到replace方法(表示替代),比如我的activity_user(这时候应用已经从开始我们那个大的activity_main跳转到activity_user了,我所有的用户 *** 作界面都在activity_user中展示),而我的activity_user实际上只有一个viewPager
,它的用处就是在UserActivity中判定完id值并做相应的实例化处理后(这个实例化处理也有讲究,后面说),作为replace方法的第一个参数,表示要被替代掉的部分(也就是最开始啥也没有的显示部分),第二个参数放我们实例化了的fragment,就可以实现跳转效果了(最后别忘了commit,以及onResume方法必须要调用父类方法即“super.onResume()")
还可以看到我这里的fragment实例化是用的相应的类内部设定的一个static方法,这个方法的特殊之处就是可以设定参数(我这里都还只有id一个参数,可以加),这个方法看上去和构造函数有点像,但它主要和intent一起使用,在activity之间传值,但如果使用构造函数传值,在应用程序的横竖状态改变(比如从竖屏变为横屏),应用程序会自动重新加载该界面,从而导致之前的fragment构造方法中的参数丢失(默认使用无参构造),因此使用可以长期保存的bundle进行传值是更为推荐的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)