SearchView不会在第二个点上调用onQueryTextChange

我的活动有SearchView,应该过滤查询。 我通过onQueryTextListener过滤它。 想法是禁用键入不允许字符,如点,逗号,斜杠等 – 只允许[AZ]这里是代码(我正在使用Kotlin,但它是可读的Java): var shouldQueryChangeBeInvoked = true override fun onCreate(savedInstanceState: Bundle?) { … searchField.setOnQueryTextListener(this) } override fun setSearchQuery(query: String) { shouldQueryChangeBeInvoked = false searchField.setQuery(query, false) shouldQueryChangeBeInvoked = true } override fun onQueryTextChange(newText: String?): Boolean { if (!shouldQueryChangeBeInvoked) { return false } val validQuery = validateQuery(newText) validQuery?.let { setSearchQuery(it) } return false } 例如,我输入“ABC”。 […]

为什么Scala的Option 没有直接转换为字节码中的T?

有一件事我不明白斯卡拉,为什么空尽管没有通过替代测试的子类所有的东西。 大概这是为了Java的兼容性,这是好的,我猜 – 但是然后Scala推动Option [T]模式。 这我不明白。 一个选项[T]不给你任何额外的保证(因为每个T是一个事实上的选项无论如何)。 但它也总共有4个州: val a: Option[String] = null val b: Option[String] = Some(null) val c: Option[String] = None val d: Option[String] = Some("A string") 这看起来既低效(从字节码pov),甚至可能比痛苦的Java更糟糕。 我的问题是,为什么Scala没有将Option [T]直接翻译成java字节码T,所有与Java代码(使用引用)的接口都必须通过这个Option [T] ,正是这样)。 而且会有一个注释或者什么,因为当一个Scala方法与一个不能是None的T协同工作的时候。 这似乎是最明显的正确的,最安全的和最有效的。 谢谢

类型推断是多么昂贵?

我绝对比Scala类型推理引擎更激动,但是在真实的世界环境中: 有多少表现退缩? 在编译时或运行时,何时推断出类型?

如何用FindBugs避免kotlin文件

我将findbugs集成到一个混合的java / kotlin项目中。 但是,findbugs在生成的jar上运行时,会发现与通过kotlin文件生成的类有关的bug。 有没有办法避免检查这些类? 谢谢

如果有任何更改,livedata如何将数据发送到活动

嗨,我正在阅读这个LiveData和Observer例子https://code.tutsplus.com/tutorials/introduction-to-android-architecture–cms-28749 MainActivityViewModel.kt class MainActivityViewModel : ViewModel() { private var notes: MutableLiveData<List<String>>? = null fun getNotes(): LiveData<List<String>> { if (notes == null) { notes = MutableLiveData<List<String>>() loadNotes() } return notes!! } private fun loadNotes() { // do async operation to fetch notes } } MainActivity.kt class MainActivity : LifecycleActivity(), AnkoLogger { override fun onCreate(savedInstanceState: Bundle?) { […]

我的输入不被识别

所以我有这3个采摘 val pickerHours = numberPickerHours as NumberPicker val pickerMinutes = numberPicker as NumberPicker val pickerSeconds = numberPickerSeconds as NumberPicker 我创建了一个Listener来获取它们的值,但是我的验证正在“工作”到假定值没有改变的地步。 所以,我选择什么样的价值并不重要,它没有做任何事情 有任何想法吗? var timerString = "" var timerString1 = "" var timerString2 = "" pickerHours.minValue = 0 pickerHours.maxValue = 100 pickerHours.wrapSelectorWheel = false pickerHours.isEnabled = true pickerMinutes.minValue = 0 pickerMinutes.maxValue = 60 pickerMinutes.wrapSelectorWheel = false […]

TornadoFX ItemViewModel更新如果支持对象,不公开JavaFX属性更改

我有一个下面的代码 class MainView : View("Example") { val model: UserModel = UserModel() init { model.item = User(status = true) } override val root = vbox { useMaxWidth = true label(model.status) button("Get new status") { action { model.item.updateStatus() println("Status in model: ${model.status.value}") println("Status in backing object: ${model.item.status}") } } } } class User(var status: Boolean, val api: […]

用VertX服务favicon.ico和其他静态文件

我正在尝试提供一个favicon和一些字体。 object Lion : AbstractVerticle() { @JvmStatic @Throws(IOException::class) fun main(args: Array<String>) { val vertx = Vertx.vertx() val router = Router.router(vertx) router.route().handler(CorsHandler.create("*") .allowedMethod(HttpMethod.GET) .allowedMethod(HttpMethod.POST) .allowedMethod(HttpMethod.OPTIONS) .allowedHeader("X-PINGARUNER") .allowedHeader("Content-Type")) // some json GET / POST routes here router.route().handler(FaviconHandler.create()); router.route().handler(StaticHandler.create()) vertx.createHttpServer().requestHandler { router.accept(it) }.listen(9090) } 当我转到http://localhost:9090/favicon.ico时, FaviconHandler抛出一个导致“内部服务器错误”的异常。我的图标位于src/main/resources/webroot/favicon.ico Oct 22, 2016 11:16:42 PM io.vertx.ext.web.impl.RoutingContextImplBase SEVERE: Unexpected exception in route java.lang.RuntimeException: […]

在Spring MVC 3中指定HTTP“位置”响应头的首选方法是什么?

在Spring MVC 3中指定HTTP“位置”响应头的首选方法是什么? 据我所知,Spring只会提供一个“位置”来响应重定向(“redirect:xyz”或RedirectView),但是也有一些场景应该和实体一起发送(例如,作为“201创建”的结果)。 恐怕我唯一的选择是手动指定它: httpServletResponse.setHeader("Location", "/x/y/z"); 它是否正确? 有没有更好的方法来解决这个问题?

如何根据自定义规则验证源代码? (代码中没有“DANGER”字符串)

在编写调试语句时,我总是添加// DANGER注释,我知道我必须在构建Android应用程序的下一个版本之前将其删除。 因此,在构建每个版本之前,我手动执行CTRL + SHIFT + F搜索"DANGER" ,并确保没有调试语句仍然存在。 我可能会忘记这一点,所以我想自动化这最后一部分:发布版本应该简单地失败(最好是立即),如果代码包含"DANGER" 。 什么是最简单的方法来实现呢? 自定义的皮棉规则? 自定义gradle任务?