Kotlin+ARouter完美实现页面跳转

在BaseActivity.kt中,你可以这样定义

fun open(path: String, build: Postcard.() -> Unit = {}) {
    val postcard = ARouter.getInstance().build(path)
    postcard.build()
    postcard.navigation()
}

fun openWithFinish(path: String, build: Postcard.() -> Unit = {}) {
    open(path, build)
    finish()
}

在调用的时候,你可以open("填入你要跳转的ARouter路径")直接就可以打开这个界面了,你还可以传递extras。

open("填入你要跳转的ARouter路径") {
    withString("你要传递extra的key", "你要传递extra的value")
}

kotlin的函数如果最后一个参数是一个闭包的话,你可以将{}写在()外面,kotlin基础语法还不熟的童鞋建议先系统学习一下kotlin语法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是 Kotlin+Jetpack 实现登录接口请求的示例代码: 首先,在项目的 build.gradle 文件中添加以下依赖项: ```groovy dependencies { // Jetpack 相关依赖 implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-common-java8:2.3.1" // Retrofit 相关依赖 implementation "com.squareup.retrofit2:retrofit:2.9.0" implementation "com.squareup.retrofit2:converter-gson:2.9.0" } ``` 然后,创建一个 ViewModel 类,用于处理登录请求和响应: ```kotlin class LoginViewModel : ViewModel() { // 定义 LiveData 对象,用于保存登录结果 private val _loginResult = MutableLiveData<LoginResult>() val loginResult: LiveData<LoginResult> = _loginResult // 定义 Retrofit 对象,用于发起网络请求 private val retrofit = Retrofit.Builder() .baseUrl("https://example.com/") .addConverterFactory(GsonConverterFactory.create()) .build() // 定义登录接口 private val loginApi = retrofit.create(LoginApi::class.java) // 定义登录方法,接收用户名和密码作为参数 fun login(username: String, password: String) { viewModelScope.launch { try { // 发起登录请求 val response = loginApi.login(username, password) // 根据响应状态设置登录结果 if (response.isSuccessful) { _loginResult.value = LoginResult.Success } else { _loginResult.value = LoginResult.Failure(response.message()) } } catch (e: Exception) { _loginResult.value = LoginResult.Error(e) } } } } // 定义登录结果的 sealed class sealed class LoginResult { object Success : LoginResult() data class Failure(val message: String) : LoginResult() data class Error(val exception: Exception) : LoginResult() } ``` 其中,`LoginApi` 是一个 Retrofit 接口,用于定义登录接口: ```kotlin interface LoginApi { @FormUrlEncoded @POST("login") suspend fun login( @Field("username") username: String, @Field("password") password: String ): Response<Unit> } ``` 最后,在 Activity 或 Fragment 中使用 `LoginViewModel` 发起登录请求: ```kotlin class LoginActivity : AppCompatActivity() { private val viewModel by viewModels<LoginViewModel>() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login) // 监听登录结果 viewModel.loginResult.observe(this, { result -> when (result) { is LoginResult.Success -> { // 登录成功,跳转到主界面 startActivity(Intent(this, MainActivity::class.java)) finish() } is LoginResult.Failure -> { // 登录失败,弹出提示框 Toast.makeText(this, result.message, Toast.LENGTH_SHORT).show() } is LoginResult.Error -> { // 登录出错,打印日志 Log.e("LoginActivity", "Login error", result.exception) } } }) // 点击登录按钮时发起登录请求 loginButton.setOnClickListener { val username = usernameEditText.text.toString() val password = passwordEditText.text.toString() viewModel.login(username, password) } } } ``` 这样,我们就完成了 Kotlin+Jetpack 实现登录接口请求的示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dora丶Android

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值