我知道如何使用ViewModel,Repository和Room将数据从数据库传输到屏幕。但是如何使用POST方法实现登录活动。我需要从ViewModel或AuthorizationRepository创建LiveData isAuthorated吗?有人能展示在android架构组件中使用命令方法的示例吗?
这可以是您的登录类,可能是对ViewModel的扩展,以便在配置更改时保持活动状态:
class LoginClass
{
var loginEvent = SingleLiveEvent<LoginEvent>()
fun startLogin(user: String, password: String)
{
loginEvent.value= LoginEvent(LoginStatus.LoginStart,null,null)
launch(UI) {
try{
bg{
//do login process
}.await()
loginEvent.value= LoginEvent(LoginStatus.LoginOk,null,null)
}
catch (error: Exception){
loginEvent.value= LoginEvent(LoginStatus.LoginFailed,error.message,null)
}
}
}
data class LoginEvent(var loginStatus: LoginStatus, var errorMessage: String?, var loginExtraData: Any?)
enum class LoginStatus
{
LoginStart,
LoginOk,
LoginFailed
}
}
您可以观察登录状态以做出相应反应并更改UI:
val myLoginClass = LoginClass()
myLoginClass.loginEvent.observe(this@LifecycleOwner, Observer {
if(it==null)
return@Observer
when(it.loginStatus)
{
LoginClass.LoginStatus.LoginStart -> {
//show indeterinate progress bar, disable inputs, etc
}
LoginClass.LoginStatus.LoginOk -> {
//go to logged in activity
}
LoginClass.LoginStatus.LoginFailed -> {
//show login failed toast, hide progress bar, enable input, etc
}
}
})
要开始登录,只需调用类的登录方法:
loginButton.onClick {
myLoginClass.startLogin("user", "password")
}
从逻辑上讲,你需要的不止这些,但你可以把它作为一个骨架。
SingleLiveEvent可在以下位置找到:https://github.com/googlesamples/android-architecture/blob/dev-todo-mvvm-live/todoapp/app/src/main/java/com/example/android/architecture/blueprints/todoapp/SingleLiveEvent.java
我一直在遵循导航架构组件中的文档,以了解这个新的导航系统是如何工作的。 要从一个屏幕到另一个屏幕进行/返回,您需要一个实现接口的组件。 NavHost是一个空视图,当用户在应用程序中导航时,目的地会随之交换。 但是,似乎目前只有片段实现了< code>NavHost 导航架构组件的默认NavHost实现是NavHostFragment。 所以,我的问题是: > < li> 即使我有一个可以用< c
我目前正在学习新的Android导航架构组件 (https://developer.android.com/topic/libraries/architecture/navigation/). 我有点混淆了它的动机和概念,以下是我的不确定性: Android导航架构组件是否旨在消除在单个应用程序中使用多个活动的需要?这意味着,整个应用程序只需要一个单一活动,所有其他页面都将是片段? 在应用程序中使
In Spring Security 3.0, the contents of the spring-security-core jar were stripped down to the bare minimum. It no longer contains any code related to web-application security, LDAP or namespace confi
我有一个带有底部导航视图(BottomNavigationView)和查看页面(ViewPager)的应用程序。如何使用新的“导航架构组件”实现它 最佳做法是什么? 非常感谢
一旦你熟悉了如何设置和运行一些基于命名空间的配置的应用程序,你可能希望了解在命名空间后面这个框架实际的是如何工作的。像大多数软件一样,Spring Security有一些重要的接口和类和一些贯穿整个框架的概念。在参考指南的这部分,我们将看看其中的一部分,看看他们如何协同工作来为Spring Security提供身份验证和访问控制的支持。