标签: kotlin

创建磨损应用 XML 时遇到问题:AAPT:错误:未找到属性 android:boxedEdges

在下面的 XML 中,我在android:boxedEdges="all". 我试图删除这条线但没有解决它。

我仍然收到 AAPT:错误:找不到属性 android:boxedEdges

 <?xml version="1.0" encoding="utf-8"?>
    <androidx.wear.widget.BoxInsetLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/dark_grey"
        android:padding="@dimen/box_inset_layout_padding"
        tools:context=".MainActivity"
        tools:deviceIds="wear">

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="@dimen/inner_frame_layout_padding"
            android:boxedEdges="all">

            <TextView
                android:id="@+id/text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:text="@string/hello_world" />

            <Button
                android:layout_width="wrap_content"
                android:layout_gravity="center"
                android:layout_height="wrap_content"
                android:text="Press Here" />

        </FrameLayout>
    </androidx.wear.widget.BoxInsetLayout>
Run Code Online (Sandbox Code Playgroud)

这是一个简单的wear OS 项目。我是新手,所以任何帮助或链接都会很感激。

xml android kotlin

3
推荐指数
1
解决办法
1241
查看次数

Dagger2 @Binds 方法的参数类型必须可分配给具有接口和实现的返回类型

我有一个类实现了java.util.function.Function我想注入的接口,以便在另一个使用 Dagger2 的类中使用:

class MyUsefulClass @Inject constructor() : Function<List<String>, String> {

    override fun apply(lines: List<String>): String {
        // Do stuff 
        return ""
    }
}
Run Code Online (Sandbox Code Playgroud)

通常,我会@Binds在模块类中声明一个声明,如下所示:

@Module
interface MyModule {

    @Binds
    fun provideMyUsefulClass(concretion: MyUsefulClass): Function<List<String>, String>
}
Run Code Online (Sandbox Code Playgroud)

这种做法使我受益匪浅的所有其他类我已经在我的项目实现这个接口,但是在这一个实例中,我被错误消息映入眼帘:

@Binds methods' parameter type must be assignable to the return type…

有趣的是,将类的返回类型和@Binds声明更改为Function<MutableList<String>, String>fromFunction<List<String>, String>有效,一切都可以正常编译。

我在这里缺少什么?错误消息显然是不真实的。是否有一些我不知道的重大问题?

android kotlin dagger-2

3
推荐指数
1
解决办法
3182
查看次数

如何在 Kotlin 协程中使用 Sqldelight

SqlDelight 显然有 Kotlin 协程扩展函数,但我不知道如何实现它们,因为我找不到文档。

我有一个看起来像这样的普通查询:

val allItems
  get() = itemQueries.selectAll().mapToList()
Run Code Online (Sandbox Code Playgroud)

我可以把它变成挂起功能吗?

android kotlin sqldelight kotlin-coroutines

3
推荐指数
2
解决办法
1147
查看次数

使用 listOf 与 arrayListOf

在 Kotlin 代码中使用listOf()或是否有任何最佳实践arrayListOf()?它们实际上都返回相同的实现,我理解 listOf 更好,因为它与特定实现无关。 是它的文档吗?
它是否记录在语言风格的任何地方?
是否还有其他原因需要使用每一种?

kotlin

3
推荐指数
1
解决办法
529
查看次数

库函数是否应该挂起或返回延迟

假设我正在编写一个库,它返回一个字符串,这是一个复杂且长时间运行的任务。

我可以选择提供这个

interface StringGenerator {
   suspend fun generateString(): String
}
Run Code Online (Sandbox Code Playgroud)

或者

interface StringGenerator {
   fun generateString(): Deferred<String>
}
Run Code Online (Sandbox Code Playgroud)

这两种选择是否有任何(缺点)优点,它们是什么?我应该选择哪个?

kotlin kotlin-coroutines

3
推荐指数
1
解决办法
78
查看次数

在单元测试中处理 protobuf 类时出现 NoSuchMethod 错误

我正在尝试使用 protobuf 模型编写类的单元测试并在 Android Studio 中运行它们。
例如,这是一个简单的转换器测试

class UpdateConfigConverterTest {

    private val testable = UpdateConfigConverter()

    @Test
    fun `should convert from proto model`() {
        val url = "https://test.com"
        val availableVersion = 1
        val requiredVersion = 0
        val result = testable.convert(
            ProtoUpdateConfig.newBuilder()
                .setAvailable(availableVersion)
                .setRequired(requiredVersion)
                .setUrl("https://test.com")
                .build()
        )
        assertEquals(availableVersion, result.updateAvailableVersion)
        assertEquals(requiredVersion, result.updateRequiredVersion)
        assertEquals(url, result.url)
    }
}
Run Code Online (Sandbox Code Playgroud)

被测类:

internal typealias ProtoUpdateConfig = UpdateConfig
internal class UpdateConfigConverter {

    fun convert(source: ProtoUpdateConfig): UpdateConfig =
        UpdateConfig(
            updateAvailableVersion = source.available,
            updateRequiredVersion = source.required,
            url = source.url
        )
} …
Run Code Online (Sandbox Code Playgroud)

junit protocol-buffers kotlin android-studio protobuf-java

3
推荐指数
1
解决办法
519
查看次数

如何创建在我的 ThreadPoolExecutor 上工作的自定义 Kotlin 协程调度程序?

在迁移到 Kotlin 的过程中,问题出现了。
由于不同的原因,我们已经有了一些线程池。
如何在现有的 ThreadPool 上执行协程?

例如这个代码:

    suspend fun fetchMedia(): Flow<MediaItem> {
        return withContext(Dispatchers.IO) {...} 
    }
Run Code Online (Sandbox Code Playgroud)

如何将 Dispatchers.IO 替换为我自己的 ThreadPoolExecutor ?

java kotlin kotlin-coroutines

3
推荐指数
1
解决办法
897
查看次数

如何为 Kotlin 数据类中的属性设置 OpenAPI 类型/架构

在使用 Kotlin 的 Microprofile / Quarkus 项目中,有一个数据类,其变量类型为 Instant。

@Schema(name = "Vehicle", description = "POJO that represents a vehicle at a specific time.")
data class VehicleDTO(
    var time: Instant = Instant.EPOCH
)
Run Code Online (Sandbox Code Playgroud)

问题是生成的openapi schema并不能代表Instant的值是如何实际传输的。

架构如下所示,而它只是简单地表示为这样的字符串: 2015-06-02T21:34:33.616Z.

Instant:
  type: object
  properties:
    nanos:
      format: int32
      type: integer
    seconds:
      format: int64
      type: integer
    epochSecond:
      format: int64
      type: integer
    nano:
      format: int32
      type: integer
Run Code Online (Sandbox Code Playgroud)

我已经尝试注释数据类以使用实现字符串和类型字符串,但它没有改变任何东西。

@Schema(name = "Vehicle", description = "POJO that represents a vehicle at a specific time.")
data class VehicleDTO(
    @Schema(implementation = String::class, …
Run Code Online (Sandbox Code Playgroud)

kotlin openapi microprofile quarkus

3
推荐指数
1
解决办法
654
查看次数

弹出片段时未清除 SharedViewModel

我正在使用像这里这样的共享视图模型

但问题是,当我清除最后一个片段时,我想清除视图模型,或者杀死它的实例,但是当我离开使用它的最后一个片段时,它以某种方式幸存下来

如何以编程方式清除此视图模型?

我像这样使用它

片段A

private val model: SharedViewModel by activityViewModels()

    override fun onViewCreated() {

     model.getTotal().observe(viewLifecycleOwner, Observer { cartTotal ->
                total = cartTotal
            })

    }
Run Code Online (Sandbox Code Playgroud)

从片段 BI 发送的总数

Fragment B

private val model: SharedViewModel by activityViewModels()

    override fun onViewCreated() {

     model.setTotal = 10
}
Run Code Online (Sandbox Code Playgroud)

But when leaving Fragment A with that data (doing popBackStack since I'm using navigation components) it does not clear the viewmodel, instead when I open again my fragment , the data stills there

I …

android android-fragments kotlin android-viewmodel android-architecture-navigation

3
推荐指数
1
解决办法
1048
查看次数

来自 viewpager2 和我的父 Fragment 的 SharedViewModel

所以,我有一个片段,我们称之为片段 A,我需要它作为我的共享视图模型的主要宿主。

所以我有这样的

class FragmentA:Fragment() {

 private val model: SharedViewModel by viewModels()

}
Run Code Online (Sandbox Code Playgroud)

现在,在片段 A 中,我设置了 viewpager2 Adapter

private fun setupViewPagerWithTabLayout(
        productList: MutableList<Producto>,
        drinkList: MutableList<Producto>
    ) {
        val fragmentList = listOf(
            FragmentProducts.newInstance(productList),
            FragmentProducts.newInstance(drinkList))

        viewPager2.adapter = MyViewPageAdapter(requireActivity(),fragmentList)
        val tabLayoutMediator = TabLayoutMediator(tabLayout, viewPager2,
            TabLayoutMediator.TabConfigurationStrategy { tab, position ->

                when (position) {
                    0 -> {
                        tab.text = "Option1"
                    }
                    1 -> {
                        tab.text = "Option2"
                    }
                }

            })
        tabLayoutMediator.attach()
    }
Run Code Online (Sandbox Code Playgroud)

在这里,我实例化了位于 viewpager 中的 Fragment A 内的 FragmentProduct,但我的适配器需要 FragmentActivity

class MyViewPageAdapter(fragmentActivity: FragmentActivity,private val fragmentList: …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager kotlin android-architecture-navigation

3
推荐指数
1
解决办法
1831
查看次数