Tag: 科特林

如何解决Gradle的DexArchiveBuilderException?

我一直在Android Studio 3.0.1中得到以下的构建问题,我一直无法解决它。 在此期间我无法运行我的应用程序。 com.android.builder.dexing.DexArchiveBuilderException:com.android.builder.dexing.DexArchiveBuilderException: Failed to process /home/Code/StudioProjects/aac/app/build/intermediates/transforms/instantRunSlicer/debug/7 … Gradle控制台说NoSuchElementException发挥作用,但它不会将此exception链接到我的代码中的任何东西。 Caused by: java.util.NoSuchElementException at java.util.LinkedList$ListItr.previous(LinkedList.java:905) 我的build.gradle如下。 apply plugin: ‘com.android.application’ apply plugin: ‘kotlin-android’ apply plugin: ‘kotlin-android-extensions’ android { compileSdkVersion 26 defaultConfig { applicationId “this.app.id.is” // had to change appID for privacy minSdkVersion 21 targetSdkVersion 26 versionCode 1 versionName “1.0” testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner” } buildTypes { release […]

在Android Studio中将“java”目录重命名为“kotlin”

我的android项目是100%写在Kotlin,我想重新命名为kotlin java目录是一致的。 我补充说 sourceSets {main.java.srcDirs + =’src / main / kotlin’} 以gradle并重命名目录。 所有的编译和工作正常。 唯一的问题是,当我在项目选项卡中,在“Android”视图目录仍然名为“java”(如果我切换到项目视图的下拉列表中,我确实看到“kotlin”tho)。 我错过了什么?

Kotlin:Gradle增量编译

在M9公告中,有人表示现在支持增量编译。 这是否也适用于Gradle,尤其是Android? 如果是,如何启用它?

从资源字符串数组创建ArrayList

我已经声明了ArrayList, var otherSeriesList = ArrayList() 并试图从以下资源获取数据, otherSeriesList = ArrayList(Arrays.asList(resources.getStringArray(R.array.get_other_series))) 但是我得到错误。 请参阅图像 – 我应该如何从资源字符串数组创建ArrayList?

Kotlin Map非空值

假设我有一张地图将一张纸牌的字母翻译成一个整数 val rank = mapOf(“J” to 11, “Q” to 12, “K” to 13, “A” to 14) 在使用地图时,即使Map和Pair是不可变的,我总是必须做一个空的安全检查: val difference = rank[“Q”]!! – rank[“K”]!! 我猜这是来自genericstypes有没有? 超types。 为什么不能在编译时解决Map和Pair是不可变的问题?

添加int和int? 在Kotlin

我遇到了一个问题,看起来很简单,每个人都应该在某个地方碰到这个问题,但却找不到解决办法。 从REPL复制: var a : Int = 1 var c : Int? = 3 a + if (c != null) {c} else {0} ERROR: None of the following functions can be called with supplied argument (followed by the various implementations of kotlin.int.plus()) 所以我想要做的是添加一个Int和一个Int? 我想结果是一个Int。 很简单。 我当然知道!! 运算符,但是我希望尽可能避免使用它,因为它不是变更安全的。 a + if (c != null) {c!!} else […]

Kotlin从Recyclerview新的片段

我试图从当前片段的RecyclerView适配器打开一个新的片段。但我不知道如何设置onClickListener ..这是我的代码 internal class ContentAdapter constructor (private var dataList: ArrayList) : RecyclerView.Adapter(), View.OnClickListener { override fun onClick(v: View?) { val manager = activity.supportFragmentManager // I cannot resolve activity here val transaction = manager.beginTransaction() val book = IndividualBook() transaction.add(android.R.id.content, book, “IndividualBook”) transaction.addToBackStack(null) transaction.commit() } override fun getItemCount(): Int = dataList.size override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): […]

生成的类未find

使用Dagger2和Kotlin,当其他调用代码存在时,我的组件类实现不会被生成。 当没有调用代码存在时,生成实现。 例如 val comp = DaggerMyComponent.create() 导致构建失败, DaggerMyComponent不会生成,因此无法find // val comp = DaggerMyComponent.create() DaggerMyComponent类是生​​成的,可以在磁盘上查看,构建成功。 我试过了Dagger 2.0.1,2.0.2,2.1-Snapshot,使用Kotlin beta-1103。 如果需要,我可以发布我的gradle文件,源代码或堆栈跟踪。 有没有人遇到过这个问题?

Android:将数据发送回MainActivity

我有3个活动:Main – > Drink – > Drinkalcohol我按照顺序移动它们,但我想从DrinkAlcohol中得到结果并将它们发送到Main。 在DrinkAlcohol中,我正在使用SetResult,并在Main中使用onActivityResult 。 但是我被困在DrinkAlcohol页面,我做错了什么? DrinkAlcohol XML按钮 DrinkAlcohol gotoMainfunction: fun gotoMain(view: View){ val radioButtonID = mRg?.checkedRadioButtonId val rb = findViewById(radioButtonID!!) val checkedValue = rb.text.toString().replace(“%”,””).toDouble() val asu = mSize*checkedValue/60 logDrink(asu) val intent = Intent(this, MainActivity::class.java) val returnIntent = this.intent returnIntent.putExtra(“asu”, asu) setResult(Activity.RESULT_OK, returnIntent) } MainActivity接收代码: override fun onActivityResult(requestCode: Int, resultCode: Int, […]

断言与Kotin中的错误消息

从Java切换后,我在Kotlin中感觉很舒服,无法find如何将Kotlin的assert函数与错误消息一起使用。 听起来很简单,我只需要类似于Java的东西 assert count > 5 : “value too small” 我试过了 assert(count > 5, “value too small”) 但是,第二个参数需要是() -> Any 。 如何实现?