Tag: 安卓

kotlin setter infinte递归

我正在测试Android上的kotlin,并遇到一个问题,两个变量的setter在一个infinte递归中被调用,因为它们在初始设置时试图互相改变。 这是一个示例代码 class Example { var a: Int = 0 set(value) { b = a+10 } var b:Int = 0 set(value) { a = b-10 } } 然后说我使用下面的代码: val example = Example() example.a = 10 它最终导致一个infinte递归,最终是一个计算器。 b的setter调用setter, a又调用setter为b 。 它永远持续下去。 我希望能够在每次设置b时更新b的值,而且每当b被设置时更新a的值。 那里的科特林专家有什么想法? 在这种情况下,我是否需要将Java设置为setter,以便在为a或b赋值时不会调用setter代码。 还是有一些漂亮的Kotlin善良,我可以使用?

配置kotlin插件更新失败?

我试图通过这个窗口更新kotlin 插件 : 1-我检查更新。 2-新版本出现,我点击安装。 3-下载并安装后,我重新启动android studio。 我试了5次,每次kotlin插件都不更新。 为什么我不能更新它? 有点困惑的plugins我可以找到最终版本,但是当我打开配置kotlin插件更新它总是检查更新并安装它。

查询Android的联系人在Kotlin收购

我在尝试在Kotlin编写的Android应用程序中查询ContactsContract时遇到了一些麻烦。 Android工作室从未解析的引用(例如ContactsContract.Contacts._ID)中提供错误。 有谁知道正确的方式来查询这些Kotlin?

Kotlin Android视图绑定:findViewById vs Butterknife vs Kotlin Android扩展

我试图找出在Kotlin中执行Android视图绑定的最佳方法。 似乎有几个选项在那里: findViewById val button: Button by lazy { findViewById<Button>(R.id.button) } 牛油刀 https://github.com/JakeWharton/butterknife @BindView(R.id.button) lateinit var button: Button Kotlin Android扩展 https://kotlinlang.org/docs/tutorials/android-plugin.html import kotlinx.android.synthetic.main.activity_main.* 我非常熟悉Java领域的findViewById和Butterknife,但是Kotlin中每种视图绑定方法的优缺点是什么? Kotlin Android扩展与RecyclerView + ViewHolder模式兼容吗? 另外Kotlin Android Extensions如何通过include处理嵌套视图的视图绑定? 例如:对于使用activity_main.xml的Activity,如何访问View custom1 ? activity_main.xml中 <…> <include layout="@layout/custom" android:id="@+id/custom" /> </> custom.xml <…> <View android:id="@+id/custom1" … /> <View android:id="@+id/custom2" … /> </>

Observable.combine在kotlin中的最新类型推断

我在我的项目中使用了RxJava2,Kotlin-1.1和RxBindings。 我有简单的登录屏幕,默认情况下禁用“登录”按钮,我只想在用户名和密码edittext字段不为空时启用按钮。 LoginActivity.java Observable<Boolean> 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<CharSequence>? = null private var passwordObservable: Observable<CharSequence>? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login) initialize() } fun initialize() { userNameObservable […]

将Kotlin文件转换为java,向其中添加java代码并将其转换回Kotlin,就像直接向Kotlin文件添加代码一样?

我想贡献一个Github上的Kotlin android项目,但是我不认识Kotlin。 假设我使用Android Studio中的“反编译”将Kotlin代码转换为Java,将我自己的java代码添加到转换后的文件,然后将编辑的文件转换回Kotlin。 如果我直接添加代码而不转换为java,那么生成的Kotlin代码是否一样? 如果我想在不了解Kotlin的情况下贡献一个Kotlin项目,这是一个可行的策略吗?

引用Kotlin类时的ClassNotFoundException

我试着开始将基于Java的multidexed项目迁移到Kotlin,但是每当应用程序尝试引用Kotlin类时,我都会得到ClassNotFoundException。 奇怪的是,有时相同的代码有时不工作。 有计算机产生工作apk和其他人没有。 有时候重建就足以解决问题。 我试图谷歌它,但我只找到这个线程,但没有解决方案。 这个东西是否适用于其他人或者没有任何multidexed Kotlin项目呢? 我已经尝试了AS 2.3.3和AS 3.0.0-beta6,2.3.3 android插件,kotoin版本1.1.50, 没有proguard 。 buildscript { ext.kotlin_version = '1.1.50' ext.android_plugin_version = '2.3.3' ext.support_lib_version = '25.3.1' ext.play_services_version = '11.0.4' repositories { jcenter() maven { url "https://maven.google.com" } } dependencies { classpath "com.android.tools.build:gradle:$android_plugin_version" classpath 'me.tatarka:gradle-retrolambda:3.2.5' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:3.0.0' classpath 'com.google.firebase:firebase-plugins:1.1.1' } } allprojects { repositories { jcenter() […]

在apk中使用Kotlin构建DuplicateFileException

我正在尝试使用Kotlin / Anko构建一个基本的应用程序,但是我收到以下重复文件异常 执行失败的任务':app:transformResourcesWithMergeJavaResForDebug'。> com.android.build.api.transform.TransformException:com.android.builder.packaging.DuplicateFileException:在APK中复制的重复文件kotlin / internal / internal.kotlin_builtins File1:C: \ Users \ mahesh.gradle \ caches \ modules-2 \ files-2.1 \ org.jetbrains.kotlin \ kotlin-runtime \ 1.0.6。\ 3562c66f648480d3bd4f76cff722488ced13445b \ kotlin-runtime-1.0.6.jar File2:C:\ Users \ mahesh.gradle \缓存\模块-2 \文件-2.1 \ org.jetbrains.kotlin \科特林编译可嵌入\ 1.0.6 \ 4008eb91a337b377dae7e4572b8b543e5321f549 \科特林编译可嵌入-1.0.6.jar 以下是应用程序级别gradle文件的代码: apply plugin: 'com.android.application' apply plugin: 'kotlin-android' buildscript { ext.kotlin_version = '1.0.6' repositories […]

Rxjava与kotlin

我在kotlin中使用rxjava 2,但它不是编译我应该如何解决它? var emailField = name.textChanges().skipInitialValue().toFlowable(BackpressureStrategy.LATEST) var passField = password.textChanges().skipInitialValue().toFlowable(BackpressureStrategy.LATEST) Flowable.combineLatest(emailField,passField, BiFunction { t1, t2 -> t1.isNotEmpty() && t2.isNotEmpty() })

Kotlin + MVP – 意外覆盖

我一起使用Kotlin和MVP,偶然发现有点烦恼。 我得到一个“意外覆盖”的错误(你可以从下面看出来)。 除了在MainView界面中更改成员变量名称或getX()之外,是否还有解决此问题的方法。 从我所研究的,没有办法阻止kotlin为'x'生成吸气剂。 class MainActivity : Activity(), MainView { val x: String // Accidental override override fun getX(): String { return x } } interface MainView { fun getX(): String }