在下面的 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 项目。我是新手,所以任何帮助或链接都会很感激。
我有一个类实现了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>有效,一切都可以正常编译。
我在这里缺少什么?错误消息显然是不真实的。是否有一些我不知道的重大问题?
SqlDelight 显然有 Kotlin 协程扩展函数,但我不知道如何实现它们,因为我找不到文档。
我有一个看起来像这样的普通查询:
val allItems
get() = itemQueries.selectAll().mapToList()
Run Code Online (Sandbox Code Playgroud)
我可以把它变成挂起功能吗?
在 Kotlin 代码中使用listOf()或是否有任何最佳实践arrayListOf()?它们实际上都返回相同的实现,我理解 listOf 更好,因为它与特定实现无关。
这是它的文档吗?
它是否记录在语言风格的任何地方?
是否还有其他原因需要使用每一种?
假设我正在编写一个库,它返回一个字符串,这是一个复杂且长时间运行的任务。
我可以选择提供这个
interface StringGenerator {
suspend fun generateString(): String
}
Run Code Online (Sandbox Code Playgroud)
或者
interface StringGenerator {
fun generateString(): Deferred<String>
}
Run Code Online (Sandbox Code Playgroud)
这两种选择是否有任何(缺点)优点,它们是什么?我应该选择哪个?
我正在尝试使用 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) 在迁移到 Kotlin 的过程中,问题出现了。
由于不同的原因,我们已经有了一些线程池。
如何在现有的 ThreadPool 上执行协程?
例如这个代码:
suspend fun fetchMedia(): Flow<MediaItem> {
return withContext(Dispatchers.IO) {...}
}
Run Code Online (Sandbox Code Playgroud)
如何将 Dispatchers.IO 替换为我自己的 ThreadPoolExecutor ?
在使用 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) 我正在使用像这里这样的共享视图模型
但问题是,当我清除最后一个片段时,我想清除视图模型,或者杀死它的实例,但是当我离开使用它的最后一个片段时,它以某种方式幸存下来
如何以编程方式清除此视图模型?
我像这样使用它
private val model: SharedViewModel by activityViewModels()
override fun onViewCreated() {
model.getTotal().observe(viewLifecycleOwner, Observer { cartTotal ->
total = cartTotal
})
}
Run Code Online (Sandbox Code Playgroud)
从片段 BI 发送的总数
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
所以,我有一个片段,我们称之为片段 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
kotlin ×10
android ×5
android-architecture-navigation ×2
dagger-2 ×1
java ×1
junit ×1
microprofile ×1
openapi ×1
quarkus ×1
sqldelight ×1
xml ×1