踩坑笔记
- app、common model下有相同名字的资源,容易造成程序调用的是app model的资源,但却修改了common的资源,造成了ui修改失败的问题
登录功能实现
1个activity | 3个fragment |
---|---|
LoginActivity | LoginFragment |
RegisterFragment | |
ForgetFragment |
通过viewmodel进行数据共享
- 登录页面
点击登录按钮,逻辑:
1.进行账号判空(除去空格)。
2.进行密码判空(除去空格)。
3.进行账号判空(包含空格)。
4.进行密码判空(包含空格)。
5.执行登录操作(异步操作,并在获取结果以后将数据保存在本地)。
6.登录操作执行完成后,activity对登录返回结果进行操作
点击登录按钮,代码实现:
1.activity定义登录按钮,点击登录按钮,调用viewmodel的方法。
2.viewmodel中定义对应的livedata:包括loadingLivedata,作用是登录操作的时候控制等待页面的显示;errortipsStateLivedata,作用是保存登录返回结果的错误码,然后在界面上显示登录结果。
3.viewmodel中调用VMManager的方法,VMManager中定义的是账号登录操作,包含请求头的定义等,在VMManager中如果登录成功,会执行保存用户信息,通知activity跳到home页面的操作,并回调listener执行viewmodel中的代码,如果登录失败,则只执行listener回调viewmodel的代码。
4.viewmodel获取到登录结果,更新livedata数据。
5.activity监听livedata,监听到livedata数据发生变化,执行对应操作,如登录失败时显示登录失败原因等。
其余页面类似。
所有activity均继承了包含登录状态监听者的父类,并实现sign in方法,当登录操作成功的时候会执行sign in的方法。
网友评论