这段代码使FAB被按下消失: val fab = findViewById(R.id.fab) as FloatingActionButton fab.setOnClickListener({ view -> findViewById(R.id.fab2) if(view.visibility == VISIBLE) { view.visibility = INVISIBLE } else view.visibility = VISIBLE
localChatManager.addIncomingListener { from, message, chat -> Log.v(TAG,"listener") //You can't modify views from non-UI thread. this@chatActivity.runOnUiThread { object :Runnable{ override fun run() { Log.i(TAG,"runOnUiThread") } } } } 我无法弄清楚为什么runOnUiThread不工作,但在这种方法之外,一切正常。
我试图实现一个动画,我创建一个ImageView的副本,缩小它,并沿曲线移动到另一个视图的位置。 目标是视图到达目标视图的位置时消失。 我的动画代码如下(代码简化了这个问题): fun animate(imageViewToCopy: ImageView, targetView: ImageView) { // create copy of ImageView val copy = imageViewToCopy.createCopy() // draw it on the decor view (params excluded, from example code) activity.window.decorView.addView(copy) startAnimation(copy, targetView) } private fun startAnimation(imageView: ImageView, targetView: ImageView) { val dest = IntArray(2) targetView.getLocationOnScreen(dest) val targetX = dest[0] val targetY = dest[1] val […]
我不能处理几个小时的gradle构建。 这一切都确定调试版本,但释放只是不建设。 错误: 错误:执行任务':app:processStagingManifest'失败。 清单合并失败:uses-sdk:minSdkVersion 15不能小于库中声明的版本24 [Wear App sub-manifest] /home/NAME/BOOM/app/build/generated/manifests/microapk/staging/AndroidManifest.xml建议:使用工具:overrideLibrary =“”来强制使用 我理解建议,但不明白如何使用它和在哪里。 此外,我无法找到我的应用程序模块中的任何地方宣布minSdkVersion 24。
我需要帮助解决以下基本问题: 需求: 我有一个tableview可以编辑(内联),行也可以删除太多,如果需要一些复杂的操作点击一个按钮。 我的下面是三个小问题: 我用isEditable = true创建了一个tableview,并将列名称设置为可编辑的。 但是当我编辑,它不绑定到模型。 (必须缺少一件非常简单的事情) 编辑时,组合框显示选项,但选择一个值,抛出一个异常。 java.lang.ClassCastException:javafx.beans.property.SimpleStringProperty不能转换为javafx.beans.property.ObjectProperty 然后,我添加了一个删除按钮,这工作正常,当我取消tableView.items.removeAt(索引) 但是因为我想要一些额外的功能,我决定去FXEvent的火灾。 但是我应该如何在这里使用。 class MyView : View() { val warriorModel : WarriorModel by inject() val persons = FXCollections.observableArrayList<Warrior>( Warrior(1,"Tyrion Lannister", "M"), Warrior(2,"Ned Stark", "M"), Warrior(3,"Daenerys Targaryen", "F"), Warrior(4,"Arya Stark", "F") ) override val root = vbox { tableview(persons) { isEditable = true column("ID", Warrior::idProperty) […]
我想升级到匕首2.8 – 但是现在我的项目在编译时会抛出这个错误: :android:compileWithAnalyticsWithCloudProdDebugAndroidTestKotlinAn exception occurred during annotation processing. Stacktrace: java.lang.ClassCastException: org.jetbrains.kotlin.java.model.types.JeMethodExecutableTypeMirror cannot be cast to org.jetbrains.kotlin.java.model.types.JeClassInitializerExecutableTypeMirror at org.jetbrains.kotlin.annotation.processing.impl.KotlinTypes.isSubsignature(KotlinTypes.kt:275) at dagger.shaded.auto.common.Overrides$ExplicitOverrides.isSubsignature(Overrides.java:183) at dagger.shaded.auto.common.Overrides$ExplicitOverrides.overrides(Overrides.java:109) at dagger.shaded.auto.common.MoreElements.getLocalAndInheritedMethods(MoreElements.java:334) at dagger.shaded.auto.common.MoreElements.getLocalAndInheritedMethods(MoreElements.java:314) at dagger.internal.codegen.ComponentValidator.validate(ComponentValidator.java:165) at dagger.internal.codegen.ComponentProcessingStep.process(ComponentProcessingStep.java:123) at dagger.internal.codegen.ComponentProcessingStep.process(ComponentProcessingStep.java:47) at dagger.shaded.auto.common.BasicAnnotationProcessor.process(BasicAnnotationProcessor.java:329) at dagger.shaded.auto.common.BasicAnnotationProcessor.process(BasicAnnotationProcessor.java:182) at org.jetbrains.kotlin.annotation.AbstractAnnotationProcessingExtension.doRound(AnnotationProcessingExtension.kt:346) at org.jetbrains.kotlin.annotation.AbstractAnnotationProcessingExtension.process(AnnotationProcessingExtension.kt:283) at org.jetbrains.kotlin.annotation.AbstractAnnotationProcessingExtension.doAnnotationProcessing(AnnotationProcessingExtension.kt:269) at org.jetbrains.kotlin.annotation.AbstractAnnotationProcessingExtension.analysisCompleted(AnnotationProcessingExtension.kt:140) at org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(TopDownAnalyzerFacadeForJVM.kt:119) at org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationWithCustomContext(TopDownAnalyzerFacadeForJVM.kt:66) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.analyze(KotlinToJVMBytecodeCompiler.kt:365) at org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.kt:126) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyze(KotlinToJVMBytecodeCompiler.kt:358) […]
我正在尝试使用anko将按钮添加到我的活动中。 我知道有可能使用RxJava(我已经这样做了)。 我想知道如何使用Anko和异步。 代码在同步线程上运行时工作。 class MainActivity : AppCompatActivity() { fun someMethod(){ async(UI) { bg { var button = Button(this@MainActivity) button.background = this@MainActivity.getDrawable(R.drawable.ic_action_balloon) myFrame.addView(button) } } } 当我构建代码时,我得到这个错误: 错误:(32,17)Val不能被重新分配 错误:(32,55)未解决的引用:getDrawable
我有一个问题,迄今为止我无法解决,我是RxKotlin的新手,所以可能很简单。 请看代码: override fun infos(): Stream<Info> = client.infoAboutItem(identifier) .map { val itemId = it.itemId ?: "" val item = client.itemForId(itemId) ClientInfo(client, it, source, item) as Info } .let { AccessStream(it) } 流哪里是我们自制的收藏。 地图是一种方法,允许您迭代该集合中的每个项目。 这里的问题是 client.itemForId(itemId) 是一个http调用,返回一个不理想的Single。 我想创建一个异步调用内部映射,将返回项目而不是单一,然后将其传递给ClientInfo。 到目前为止我尝试过的事情是使用在地图内部的订阅和使用blockingGet()方法,但是这阻止了主线程,即使我观察和订阅不同的线程 所以它涉及到对集合中的每一件事进行异步调用。 感谢帮助
目前,我使用retrofit2来调用宁静的apis并得到回应。 因为响应体可以是多个类型,所以我写了下面的代码。 //Interface @FormUrlEncoded @POST("payments/events/{id}") fun postPayment(@Path("id") id: String): Call<Any> //Api Manager fun postPayment(id: String): Observable<Any> { return Observable.create { subscriber -> val callResponse = api.postPayment(id) val response = callResponse.execute() if (response.isSuccessful) { if (response.body() is MyClass1) { // never success… } else if (response.body() is MyClass2) { // never success… } subscriber.onNext(response.body()) subscriber.onCompleted() } […]
我想使用Kodein将嘲笑覆盖注入到我的Android仪器测试中。 我不知道哪个是最好的方法来做到这一点。 以下是我的想法: 我的应用程序使用KodeinAware应用程序类。 服务的Kodein实例拥有我的应用程序所需的所有依赖关系。 在我的测试中,我想注入特定的依赖关系的模拟覆盖,以测试在各种情况下的应用程序的行为。 对于每个测试,覆盖应该是不同的,并且应该在测试运行之前/之前注入。 在这种情况下,可配置的Kodein扩展是否合理,还是有一个更简单,更合适的方法(如果是的话)?