我的 LazyColumn 没有重组,但值正在更新。
如果我向下滚动列表并向上滚动,我会看到 UI 的正确值
主要活动
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MyTheme {
MyApp()
}
}
}
}
// Start building your app here!
@Composable
fun MyApp(vm: PuppyListViewModel = viewModel()) {
val puppers by vm.pups.collectAsState(emptyList())
Surface(color = MaterialTheme.colors.background) {
Column {
Toolbar()
LazyColumn {
items(puppers) { pup -> PuppyUI(pup, vm::seeDetails, vm::togglePuppyAdoption) }
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
视图模型
class PuppyListViewModel : ViewModel() {
val pups = PuppyRepo.getPuppies().onEach {
println("FlowEmitted: $it")
}
fun …Run Code Online (Sandbox Code Playgroud) android kotlin kotlin-coroutines android-jetpack-compose kotlin-flow
我想做一些非常简单的事情:更改AppBarLayout整个主题的组件背景。
这是我的主题,我不知道要覆盖哪个属性:
<style name="BaseTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
<!-- Some color attributes that doesn't actually matter... -->
</style>
Run Code Online (Sandbox Code Playgroud)
这是AppBarLayout我想应用于上述主题的新主题:
<style name="DefaultAppBarLayout" parent="Widget.Design.AppBarLayout">
<item name="android:background">@android:color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我应该从另一个父级继承样式吗BaseTheme?或者<item name="attribute_name"></item>我应该将我的新风格应用到哪些方面?
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.Toolbar
android:id="@+id/more_actionbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:title="@string/moremenu_fragment_title"/>
</com.google.android.material.appbar.AppBarLayout>
Run Code Online (Sandbox Code Playgroud)
这是我想写的代码;无需每次都指定“背景颜色=白色”
适用于它的代码;但我不想android:background="@color/colorTrueWhite"为AppBarLayout我的 XML 中的每个内容编写
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorTrueWhite">
<androidx.appcompat.widget.Toolbar
android:id="@+id/more_actionbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:title="@string/moremenu_fragment_title"/>
</com.google.android.material.appbar.AppBarLayout>
Run Code Online (Sandbox Code Playgroud) 我一直在寻找 Android 架构组件,最近又在寻找导航组件。
我试图将对象作为参数传递,以便下一个片段可以检索该数据,但要做到这一点,我需要执行以下两件事之一:
关于这些选项的问题是,我读到 Parcelable 使用反射,并且它在时间方面可能会变得相当昂贵
我还尝试构建一个“SharedMasterDetailsViewModel”,但没有运气,因为可观察的回调没有在我新创建的片段上执行。(我认为 LiveData 在创建片段之前执行回调)
这是一些关于我如何尝试解决此问题的代码
共享会话视图模型
class SessionSharedViewModel : ViewModel() {
var sharedSession: LiveData<Session> = MutableLiveData()
private set
fun setSession(data: Session) {
val casted = this.sharedSession as MutableLiveData<Session>
casted.postValue(data)
}
}
Run Code Online (Sandbox Code Playgroud)
主片段
override fun onItemClicked(item: Session) {
sessionSharedViewModel.setSession(item) // Item is a complex object of mine
this@HomeFragment.findNavController().navigate(R.id.sessionDetailsFragment)
}
Run Code Online (Sandbox Code Playgroud)
详情片段
class SessionDetailsFragment : Fragment() {
companion object {
fun newInstance() = SessionDetailsFragment()
}
private lateinit var …Run Code Online (Sandbox Code Playgroud) navigation android kotlin android-livedata android-architecture-components
我刚刚阅读了Deno 文档中的 Web API,似乎localStorage是作为持久 SQLite 实现的,并且sessionStorage是作为内存 SQLite 实现的。
每当不传递--location参数时,在我的文件系统中的哪里可以找到 SQLite DB?
您好,我正在 Node 上开始使用 KotlinJS,我已经放置了一个非常简单的 kotlin 文件,我想使用原始kotlinc-js编译器来编译它。不使用gradle
package main
fun heavy() {
(1..10_000_000).forEach { it*it }
}
fun main() {
heavy()
println("Bye JS")
}
Run Code Online (Sandbox Code Playgroud)
这是make我尝试过但没有成功的命令:
build-js:
kotlinc-js main.kt -output main.kt.js
Run Code Online (Sandbox Code Playgroud)
它编译得很好,但是当我尝试运行时node main.kt.js:
throw new Error("加载模块'main.kt'时出错。未找到其依赖项'kotlin'。请检查'kotlin'是否在'main.kt'之前加载。"); ^
错误:加载模块“main.kt”时出错。未找到其依赖项“kotlin”。请检查“kotlin”是否在“main.kt”之前加载。在对象。(/home/nanospicer/KotlinProjects/KotlinScripting/main.kt.js:2:9) 在 Module._compile (节点:internal/modules/cjs/loader:1101:14) 在 Object.Module._extensions..js (节点:内部/模块/cjs/loader:1153:10)在Module.load(节点:内部/模块/cjs/loader:981:32)在Function.Module._load(节点:内部/模块/cjs/loader:822) :12) 在 Function.executeUserEntryPoint [作为 runMain] (节点:internal/modules/run_main:79:12) 在节点:internal/main/run_main_module:17:47
好的,所以我认为它缺少 kotlin 运行时。我将尝试与 JVM 编译器相同的参数:-include-runtime这会导致错误:
错误:无效参数:-include-runtime 信息:使用 -help 获取更多信息
然后我尝试:
build-js:
kotlinc-js main.kt -kotlin-home "/mnt/c/Program Files/JetBrains/IntelliJ IDEA Community Edition 2021.2.1/plugins/Kotlin/kotlinc/" -libraries "/mnt/c/Program …Run Code Online (Sandbox Code Playgroud) 在我的系统(带有树莓派)中,我有一些传感器将数据发布到 Mosquitto,我使用 Telegraf 将数据传输到 influxDB 数据库,我使用 Grafana 来显示数据。
在没有 TLS 连接的测试期间(在 mosquittos 中)一切正常,但当我激活 TLS 时,我开始遇到 Telegraf 问题。
传感器使用 client.key、client.crt 和 ca.crt 将数据发送到代理。在代理中我可以看到来自传感器的数据。所以我认为问题不在于此。
在 telegraf 中(我想它作为客户端工作)我尝试配置 TLS 连接。查看 telegraf.service status ,它处于活动状态并且正在运行。查看日志,我没有看到连接中的错误,但我看不到来自代理的任何数据。
在 Telegraf.conf 中,我设置了证书,如下所示。我使用了用于连接到系统的传感器或其他客户端的文件,而不是使用 pem 文件:扩展名不同,我不知道问题是否在这里。
这里是Telegraf的配置(mqtt_consumer)
# # Read metrics from MQTT topic(s)
[[inputs.mqtt_consumer]]
# ## Broker URLs for the MQTT server or cluster. To connect to multiple
# ## clusters or standalone servers, use a seperate plugin instance.
# ## example: servers = ["tcp://localhost:1883"]
# ## servers = ["ssl://localhost:1883"] …Run Code Online (Sandbox Code Playgroud) 很简单;刚刚通过向导创建了一个 Compose Multiplatform 项目。
继续创建主题;但我想使用相同的字体,所以我poppins.ttf把commonMain/resources/font/.
然后我在模块中声明了以下内容commonMain:
expect val projectFontFamily: FontFamily
Run Code Online (Sandbox Code Playgroud)
在我使用的模块上commonDesktop:
actual val projectFontFamily: FontFamily = FontFamily(
Font("font/poppins.ttf")
)
Run Code Online (Sandbox Code Playgroud)
太棒了,成功了。从今起commonAndroid:
actual val projectFontFamily: FontFamily = FontFamily(
Font(R.font.poppins)
)
Run Code Online (Sandbox Code Playgroud)
由于某种原因,该类R未正确生成,我无法使用R.font.poppins.
如果我将“资源”重命名为“res”并将字体推入其中,res/font/那么它就可以工作。(但我只是复制了字体文件)。
我该如何解决这个问题?
kotlin android-resources kotlin-multiplatform android-jetpack-compose compose-multiplatform
android ×3
kotlin ×3
android-architecture-components ×1
deno ×1
filesystems ×1
kotlin-flow ×1
kotlin-js ×1
kotlinc ×1
mosquitto ×1
navigation ×1
raspberry-pi ×1
sqlite ×1
telegraf ×1