Articles of kotlin

如何在Kotlin中使用Dagger的2 @Named资格赛

最近我在Kotlin遇到了@Named资格赛的问题。 我以为从这个改变: var boldTypeface: Typeface? = null [Inject] set 进入这个 var boldTypeface: Typeface? = null [Inject Named(“bold”)] set 要么 var boldTypeface: Typeface? = null [Inject] [Named(“bold”)] set 会解决我的问题。 但它没有,它甚至没有编译。

使用TreeTranslator重命名不适用于Kotlin的函数

我正在尝试根据AST(抽象语法树)重写在构建期间重命名Java接口中的方法和Kotlin接口中的函数。 对于这个问题,我们忽略了重命名方法/函数给调用带来的影响。 要find要重命名的方法/函数,我正在使用自定义注释和注释处理器。 我按照这些说明操作Java接口。 我创建了一个包含三个模块的新项目。 app模块,注释模块和注释处理器模块。 app模块是一个Android应用程序,包含两个独立的Java和Kotlin接口文件,每个接口文件都有一个带注释的方法/函数。 RenameJava.java package nl.peperzaken.renametest; import nl.peperzaken.renameannotation.Rename; public interface RenameJava { @Rename void methodToRename(); } RenameKotlin.kt package nl.peperzaken.renametest import nl.peperzaken.renameannotation.Rename interface RenameKotlin { @Rename fun functionToRename() } 注释模块是一个只包含@Rename注释的Java库,我们指定只在函数上允许它,我们说它只能在源代码中可见。 Rename.kt package nl.peperzaken.renameannotation @Target(AnnotationTarget.FUNCTION) @Retention(AnnotationRetention.SOURCE) annotation class Rename 注释处理器模块是一个Java库,它只包含迭代具有注释的元素并对其进行转换的处理器。 RenameProcessor.kt package nl.peperzaken.renameprocessor import com.google.auto.service.AutoService import com.sun.source.util.Trees import com.sun.tools.javac.processing.JavacProcessingEnvironment import com.sun.tools.javac.tree.JCTree import com.sun.tools.javac.tree.TreeTranslator […]

什么是Kotlin中的generateStubs配置?

什么是Kotlin的generateStubs ? 这是我在build.gradle配置。 我在公共文档中找不到它: http : //kotlinlang.org/docs/reference/kapt.html kapt { generateStubs = true } 如果我在我的项目中使用Java和Kotlin(1.2) ,仍然需要添加?

Kotlin编程语言有哪些优点?

我非常渴望知道Kotlin编程语言优于Java的Android应用程序开发的优势,因为我很想探索新的东西。 如果任何人对此有任何了解,请做到需要。 谢谢。

Kotlin 1.2.50要求baseFeatureInfoDir

当我用一个Android项目切换时 classpath ‘com.android.tools.build:gradle:3.2.0-alpha18′ 至 classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.50” 我遇到了 什么地方出了错: 在任务’:detector:kaptDebugKotlin’的配置中发现了一些问题。 目录’〜/ project / build / intermediates / feature_data_binding_base_feature_info / debug / dataBindingExportFeaturePackageIdsDebug / out’为属性’annotationProcessorOptionProviders指定$ kotlin_gradle_plugin。$ 0. $ 0.baseFeatureInfoDir’不存在。 为属性’databinding.baseFeatureInfoDir’指定的目录’〜/ project / build / intermediates / feature_data_binding_base_feature_info / debug / dataBindingExportFeaturePackageIdsDebug / out’不存在。 使用classpath ‘com.android.tools.build:gradle:3.1.3’它可以正常工作

Recyclerview:收听填充点击事件

我有一个水平的RecyclerView其中leftPadding = 48dp , topPadding = 24dp , clipToPadding = false 。 它从左侧的空白区域开始,但是当用户滚动列表时,其项目将在该(先前为空)空间上绘制。 顶部空间始终为空。 此RecyclerView位于FrameLayout内,其foreground = selectableItemBackground 。 我的问题来自于RecyclerView消耗并忽略左侧和顶部空间的触摸,这意味着当连接到FrameLayout或RecyclerView时,不会触发OnClickListener 。 我已经在RecyclerView上尝试使用clickable = false和focusable = false ,但它不起作用。 我在找什么: 可滚动的RecyclerView 可点击的RecyclerView项目 单击RecyclerView’s空白空间时, FrameLayout单击事件 (替代3)可点击的RecyclerView’s空白区域 编辑:我创建了一个简单的项目,显示我正在谈论的问题: https : //github.com/dadino/recyclerviewemptyspacestest有2个提交,在第一个我试图抓住父视图的点击,在第二个我试图抓住RecyclerView本身的点击。 它们都不起作用。

android数据绑定unit testing错误无法解析数据绑定编译器选项。 PARAMS:

当我尝试为我的kotlin android项目设置unit testing时,我遇到了以下错误。 以前有人遇到过这种问题吗? 这已被标记为官方错误跟踪器上的错误 FAILURE:构建因exception而失败。 *出了什么问题:任务执行失败’:app:compileDebugUnitTestJavaWithJavac’。 > java.lang.RuntimeException:无法解析数据绑定编译器选项。 参数:kapt.annotations:/Users/trevor/Dev/Android/workspace/gitlab-example/app/build/tmp/kapt/debugUnitTest/wrappers/annotations.debugUnitTest.txt kapt.kotlin.generated:/ Users / trevor / Dev / Android / workspace / gitlab-example / app / build / tmp / kapt / debugUnitTest / kotlinGenerated *尝试:使用–info或–debug选项运行以获得更多日志输出。 *exception是:org.gradle.api.tasks.TaskExecutionException:任务执行失败’:app:compileDebugUnitTestJavaWithJavac’。 在org.gradle上的org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:84)org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:55)位于org.gradle.api.internal的org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)上的.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)位于org.gradle.api.internal.tasks.execution的org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:46).tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88) .skipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51)org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTas 位于org.gradle.exe。执行(CatchExceptionTaskExecuter.java:34)的orE.gradle.execution.taskgraph.DefaultTaskGraphExecuter $ EventFiringTaskWorker $ 1.execute(DefaultTaskGraphExecuter)中的kExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) .java:236)在org.gradle上的org.gradle.execution.taskgraph.DefaultTaskGraphExecuter $ EventFiringTaskWorker $ 1.execute(DefaultTaskGraphExecuter.java:228)org.gradle.internal.Transformers $ 4.transform(Transformers.java:169)。 org.gradle.internal.progress.DefaultOperationExecutor.run(DefaultBuildOperationExecutor.java:61)中的internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)org.gradle.execution.taskgraph.DefaultTaskGraphExecuter $ EventFiringTaskWorker.execute(DefaultTaskGraphExecuter。 java:228)org.gradle.execution.taskgraph.DefaultTaskGraphExecuter […]

Android数据绑定和Kotlin

我正在将我的Android应用程序从Java转换为Kotlin。 它正常工作,除非我尝试转换使用Android数据绑定库的文件。 在这种情况下,Android Studio会在编译时抱怨未解析的引用: Error:(10, 44) Unresolved reference: AdapterHistoriesListBinding 其中AdapterHistoriesListBinding是应由数据绑定库生成的文件的名称。 它在Java中正常工作,所以我猜这是Kotlin的一个问题。 我使用的是Android Studio 2.0.0-beta6,Android Gradle Plugin 2.0.0-beta6和Kotlin 1.0。 有没有什么可以使数据绑定库与Kotlin一起工作?

Observable.combine在kotlin中的最新types推断

我在我的项目中使用RxJava2,Kotlin-1.1和RxBindings。 我有简单的登录界面,默认情况下禁用“登录”按钮,我想只在用户名和密码的edittext字段不为空时启用按钮。 LoginActivity.java Observable isFormEnabled = Observable.combineLatest(mUserNameObservable, mPasswordObservable, (userName, password) -> userName.length() > 0 && password.length() > 0) .distinctUntilChanged(); 我无法将上述代码从Java翻译成Kotlin: LoginActivity.kt class LoginActivity : AppCompatActivity() { val disposable = CompositeDisposable() private var userNameObservable: Observable? = null private var passwordObservable: Observable? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login) initialize() } fun initialize() { userNameObservable […]

Dagger 2与Kotlin的多重绑定

我的dagger 2模块中有以下片段 @Singleton @Provides @ElementsIntoSet fun providesQueries(foo: Foo): Set{ val queries = LinkedHashSet() queries.add(foo) return queries } 我试着以这种方式注入 @Inject lateinit var foo: Set 但是dagger显示一个错误,表示Dagger无法在没有@Provides或@Produces方法的情况下提供java.util.Set。 我在java中也做了同样的工作。 有人知道为什么会失败吗?