如何将2个数组转换为地图

我有2个数组,一个用字符串作为键,另一个用整数作为值。 我如何将它们转换为地图? val keys = arrayOf(“butter”, “milk”, “apples”) val values = arrayOf(5, 10, 42) val map: Map = ??? 编辑:我知道如何将列表转换为地图在Kotlin? ,但是并没有解决这个问题,因为我有2个列表。

当我使用Android Studio 3.0时如何存储json数据?

在我的Android应用程序中,我设计了下面的json数据构造,json数据将在未来被读取,添加,更新和删除节点。 我想我应该存储JSON数据,我怎么能坚持JSON数据? 我必须将其保存为文件夹\资产下的文本文件吗? 还有,有一个简单的方法来处理JSON数据? 我需要使用Gson库吗? { “Setting”: [ { “id”: “34345”, “Bluetooth”: { “Status”: “ON” }, “WiFi”: { “Name”: “MyConnect”, “Status”: “OFF” } } , { “id”: “16454”, “Bluetooth”: { “Status”: “OFF” } } ] }

在Kotlin中写入一个等于Int.MIN_VALUE的hex整数字面值

如何在Kotlin中写入一个等于Int.MIN_VALUE (十进制数为-2147483648 )的hex整数文字? AFAIK,一个Int是4个字节…有时好像2的补码用来表示整数…但我不确定。 我已经尝试了下面的hex文字来帮助我自己理解系统: 0xFFFFFFFF但这是一个Long ,而不是一个Int 0xFFFFFFFF.toInt()这是-1 -0xFFFFFFFF.toInt()这是1 0x7FFFFFFF这是2147483647这是Int.MAX_VALUE -0x7FFFFFFF这是-2147483647这是Int.MIN_VALUE+1 0xFFFFFFF ,十进制是268435455 0x0FFFFFFF也是十进制的268435455 但我不知道什么hex整数文字可以用来表示Int.MIN_VALUE 。 我希望答案不会让我感到愚蠢

为什么$ MockitoMock $实例不被识别为模拟?

我使用Kotlin,Mockito和MockitoJRunner运行以下简化测试: open class SomeClassToBeMocked @Inject constructor() { fun map(foo: Foo): Bar {…} } @Mock private lateinit var someMock: SomeClassToBeMocked @InjectMocks private lateinit var subject: Subject @Test fun shouldAssertSomething() { val foo = Foo() // from Foo.kt val bar = Bar() // from Bar.java from *another module* whenever(someMock.map(foo)).thenReturn(bar) // breakpoint[1] subject.myMethod(foo) verify(someMock).map(foo) } 这种模式在代码的其他部分工作,但不是在这个特定的测试中,我得到以下错误信息: org.mockito.exceptions.misusing.MissingMethodInvocationException: when() […]

Firestore与Firebase的离线问题

我将其中一个应用程序转换为新的Firestore。 我正在做一些事情,像点击一个按钮保存文档,然后在onSuccess监听器,去一个不同的活动。 我还使用Firestore保存操作返回任务的事实,使用Tasks.whenAll将任务组合在一起: val allTasks = Tasks.whenAll( createSupporter(supporter),, setStreetLookup(makeStreetKey(supporter.street_name)), updateCircleChartForUser(statusChange, createMode = true), updateStatusCountForUser(statusChange)) allTasks.addOnSuccessListener(this@SignUpActivity, successListener) allTasks.addOnFailureListener(this@SignUpActivity, onFailureListener) 最后,我从成功的保存中获取文档ID,并将其存储在首选项或本地数据库中供以后使用(在onSuccessListener ) 这一切都很好。 直到网络连接中断 。 然后,一切都崩溃了,因为任务永远不会完成,onSuccess / onFailure / onComplete监听器永远不会被调用。 所以应用程序只是挂起。 我正在通过在每次保存之前检查网络可用性来解决此问题,然后通过创建没有任何侦听器的任务来解决此问题。 我也使用UUID生成器在本地生成文档ID。 顺便说一句,这不是应用程序与旧的firebase的工作方式。 在这种情况下,离线时,一切都运行良好,每当应用程序上线时,我都会看到文件同步。 我的Firestore的解决方法似乎是一个可怕的黑客攻击。 有没有人想出更好的解决方案? 有关插入/删除文档回调的相关Firestore数据库在没有连接时不会被调用 addOnCompleteListener不会与云端firestore脱机调用

我如何通过RPC检查流的当前状态?

我在FlowLogic类中find了一个recordAuditEvent(…)方法,但是我不明白如何使用它,我不知道这个用例是否有用。

如何在运行时检查授权许可?

在Android M(预览版)中 ,用户可以选择特定的应用程序并检索特定的权限。 所以我问在运行时如何检查授权许可 ?

Kotlin中的Room Persistence lib实现

我在kotlin中为我的数据库实现实现了Room persistence lib。 以下是我的Entity , Dao和Database类: Food.kt @Entity class Food(@ColumnInfo(name = “food_name”) var foodName: String, @ColumnInfo(name = “food_desc”) var foodDesc: String, @ColumnInfo(name = “protein”) var protein: Double, @ColumnInfo(name = “carbs”) var carbs: Double, @ColumnInfo(name = “fat”) var fat: Double) { @ColumnInfo(name = “id”) @PrimaryKey(autoGenerate = true) var id: Long = 0 @ColumnInfo(name = “calories”) var […]

Kotlin:方法不能和generics一起使用

作为这个的另一面: interface PacketDecoder : PacketTranscoder { fun decode(client: Client, buf: ByteBuf): T } 我正在尝试使用这个: interface PacketEncoder : PacketTranscoder { fun encode(packet: T, buf: ByteBuf) } 虽然PacketDecoder似乎工作正常,我不能引用encode(T, ByteBuf)方法。 IntelliJ IDEA自动完成甚至不显示它作为一个选项,手动写入它导致一个未解决的参考错误。 为了解决它,我目前正在使用这个黑客,但我不认为这是做到这一点的正确方法。 fun encode(packet: P, buf: ByteBuf)

我可以懒惰初始化一个值取决于构造函数?

我有一个课程,要么知道创造的具体价值,要么我需要创造它,这有点贵。 只有在实际需要时才能生成该值? val expensiveProperty: A constructor(expensiveProperty: A) { this.expensiveProperty = expensiveProperty } constructor(value: B) { // this doesn’t work this.expensiveProperty = lazy { calculateExpensiveProperty(value) } }