关于什么东西过时了需要修正
LiveData
慢着,什么是LiveData?
LiveData是用来通知观察者的一壳,里边套啥都行
只要LiveData的数据被重新赋值(哪怕值相同)就会通知给观察者
比如说下边丑陋的代码 ↓
viewModel.counter.observe(this) { count ->
binding.infoText.text = count.toString()
binding.plusOneBtn.text = "$count++"
}
viewModel里面的counter就是一个类型为Int的LiveData,用个observe就可以 时 时 刻 刻 视 奸 它 ,一见到它变化就能作出反应
如果想获取它的值,在后面加个.value
即可
所以改了啥?
由于lifecycle-extensions在新版本已弃用,所以下面这种无聊的写法被抛弃辣
[!WARNING]
代码块里面似乎加不了删除线,所以我在这里放了个Warning
val userName: LiveData<String> = Transformations.map(userLiveData) { user ->
"${user.firstName} ${user.lastName}"
}
现在的写法则是进一步简化,变成了
val userName: LiveData<String> = userLiveData.map { user ->
"${user.firstName} ${user.lastName}"
}
至少现在能少传入一个参数了
如果想在Fragment中的toolbar使用菜单……
关键词addMenuProvider
,不要再选择setHasOptionsMenu
了(虽然也能用
在Activity销毁时将数据返回给上一个Activity……
使用registerForActivityResult
而非startActivityForResult
和onActivityResult
那registerForActivityResult
要怎么用呢
其实逻辑和原来的是差不多的,就是通过某个Launcher
(暂且这么叫)启动一个intent
,然后获取它结束时的返回值
其实就是把startActivityForResult
和onActivityResult
合在一起了(大概吧
请看代码
pickImageLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result ->
if (result.resultCode == Activity.RESULT_OK) {
// 要做什么的代码
}
}
这样就能实现那两个已经废弃玩意的功能辣
AsyncTask
它已经死了,还是去看看协程吧
有关构建
现在仓库什么的东西都在settings.gradle.kts
里面了,不要再去build.gradle.kts
里面找了!!!
老旧教程害人不浅啊
有关AGP
这玩意的版本现在由settings.gradle
中的"com.android.application"
其后的version
决定,无论是否apply
都是能修改版本的。。。
杂项
自Android 13起,PendingIntent.getActivity()
中第四个参数已经不能填入0了,应该改成PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE)