Questions tagged «kotlin»

Kotlin是JetBrains支持的一种开源静态类型编程语言。Kotlin结合了OOP和功能特性,并专注于互操作性,安全性,清晰度和工具支持。它目前针对JVM和JavaScript,并且是Android上官方支持的语言。

3
如何将Kotlin的MutableList初始化为空的MutableList?
看起来如此简单,但是,如何将Kotlin初始化MutableList为空MutableList? 我可以用这种方式来破解它,但是我敢肯定有一些更容易的方法: var pusta: List<Kolory> = emptyList() var cos: MutableList<Kolory> = pusta.toArrayList()
241 kotlin 

9
尝试访问Kotlin片段中的视图时发生NullPointerException
如何与一起使用Kotlin Android扩展Fragment?如果我在内部使用它们onCreateView(),则会出现以下NullPointerException异常: 原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'android.view.View android.view.View.findViewById(int)' 这是片段代码: package com.obaied.testrun.Fragment import android.os.Bundle import android.support.v4.app.Fragment import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.obaied.acaan.R import kotlinx.android.synthetic.main.fragment_card_selector.* public class CardSelectorFragment : Fragment() { val TAG = javaClass.canonicalName companion object { fun newInstance(): CardSelectorFragment { return CardSelectorFragment() } } override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, …

6
以Kotlin字符串模板格式
Kotlin具有一项出色的功能,称为字符串模板。我很喜欢。 val i = 10 val s = "i = $i" // evaluates to "i = 10" 但是模板中是否可以有任何格式?例如,我想在kotlin中格式化字符串模板中的Double格式,至少要在小数点分隔符后设置一些数字: val pi = 3.14159265358979323 val s = "pi = $pi??" // How to make it "pi = 3.14"?

10
Kotlin的列表缺少“添加”,“删除”,地图缺少“放置”等?
在Java中,我们可以执行以下操作 public class TempClass { List<Integer> myList = null; void doSomething() { myList = new ArrayList<>(); myList.add(10); myList.remove(10); } } 但是,如果我们直接将其重写为Kotlin,如下所示 class TempClass { var myList: List<Int>? = null fun doSomething() { myList = ArrayList<Int>() myList!!.add(10) myList!!.remove(10) } } 我没有找到的错误add,并remove从我的列表功能 我将其强制转换为ArrayList,但在Java中不需要强制转换,这很奇怪。这就破坏了使用抽象类List的目的 class TempClass { var myList: List<Int>? = null fun …

7
如何在Kotlin Android中为数据类创建空的构造函数
我在一个数据类中有10个以上的参数,我想用一个空的构造函数初始化该数据类,并使用setter仅设置几个参数的值,然后将该对象传递给服务器。 data class Activity( var updated_on: String, var tags: List<String>, var description: String, var user_id: List<Int>, var status_id: Int, var title: String, var created_at: String, var data: HashMap<*, *>, var id: Int, var counts: LinkedTreeMap<*, *>, ) 用法: 这样的事情会很容易 val activity = Activity(); activity.title = "New Computer" sendToServer(activity) 但这要求在创建构造函数时传递所有参数。我如何像上面那样简化? val …
194 android  kotlin 

6
如何将主键作为Room Persistence lib的自动增量
我正在创建一个Entity(Room Persistence lib)类Food,我想在其中将其foodId作为自动增量。 @Entity class Food(var foodName: String, var foodDesc: String, var protein: Double, var carbs: Double, var fat: Double) { @PrimaryKey var foodId: Int = 0 var calories: Double = 0.toDouble() } 如何设置foodId自动递增字段?

8
升级到Android 8.1后,startForeground失败
将手机升级到8.1 Developer Preview之后,我的后台服务无法正常启动。 在长期运行的服务中,我实现了startForeground方法来启动正在进行的通知,该通知在create时被调用。 @TargetApi(Build.VERSION_CODES.O) private fun startForeground() { // Safe call, handled by compat lib. val notificationBuilder = NotificationCompat.Builder(this, DEFAULT_CHANNEL_ID) val notification = notificationBuilder.setOngoing(true) .setSmallIcon(R.drawable.ic_launcher_foreground) .build() startForeground(101, notification) } 错误信息: 11-28 11:47:53.349 24704-24704/$PACKAGE_NAMEE/AndroidRuntime: FATAL EXCEPTION: main Process: $PACKAGE_NAME, PID: 24704 android.app.RemoteServiceException: Bad notification for startForeground: java.lang.RuntimeException: invalid channel for …

2
Kotlin中列表和数组类型之间的区别
List和Array类型有什么区别? 似乎可以对它们进行相同的操作(循环,过滤器表达式等),行为或用法是否存在差异? val names1 = listOf("Joe","Ben","Thomas") val names2 = arrayOf("Joe","Ben","Thomas") for (name in names1) println(name) for (name in names2) println(name)
189 kotlin 

4
标准Kotlin库中提供了哪些Java 8 Stream.collect等效项?
在Java 8中,Stream.collect它允许对集合进行聚合。在Kotlin中,除了以stdlib中的扩展功能的集合形式存在之外,这并不完全相同。但尚不清楚不同用例的等效性。 例如,在JavaDocCollectors的顶部是为Java 8编写的示例,将它们移植到Kolin时,在不同的JDK版本上不能使用Java 8类,因此可能应该以不同的方式编写它们。 在网上显示Kotlin集合示例的资源方面,它们通常是微不足道的,不能真正与相同的用例进行比较。有什么真正与案例相匹配的好示例,例如针对Java 8记录的案例Stream.collect?列表是: 将名称累积到列表中 将名称累积到TreeSet中 将元素转换为字符串并将其连接起来,并以逗号分隔 计算员工的薪金总额 按部门分组员工 按部门计算薪金总额 划分学生通过和失败 在上面链接的JavaDoc中有详细信息。 注意: 这个问题是作者故意写和回答的(“ 自我回答的问题”),因此SO中经常出现Kotlin主题的惯用答案。还要澄清一些针对Kotlin字母的非常古老的答案,这些答案对于当今的Kotlin而言并不准确。

1
在Kotlin中,处理空值,引用或转换它们的惯用方式是什么
如果我有一个可为null的类型Xyz?,我想引用它或将其转换为不可为null的类型Xyz。Kotlin的惯用方式是什么? 例如,此代码是错误的: val something: Xyz? = createPossiblyNullXyz() something.foo() // Error: "Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type Xyz?" 但是,如果我先检查null就是允许的,为什么? val something: Xyz? = createPossiblyNullXyz() if (something != null) { something.foo() } 假设我确定它永远不会,null该如何在不if检查的情况下更改或不对待一个值null?例如,在这里我从映射中检索一个可以保证存在的值,get()而not 的结果null。但是我有一个错误: val map = mapOf("a" to 65,"b" to 66,"c" …


8
在Kotlin中扩展数据类
数据类似乎可以替代Java中的老式POJO。这些类将允许继承是非常可预期的,但是我看不到扩展数据类的便捷方法。我需要的是这样的: open data class Resource (var id: Long = 0, var location: String = "") data class Book (var isbn: String) : Resource() 上面的代码由于component1()方法冲突而失败。data仅将注释留在一个类中也不起作用。 也许还有另一个习惯来扩展数据类? UPD:我可能仅注释子子类,但data注释仅处理构造函数中声明的属性。也就是说,我必须声明所有父项的属性open并覆盖它们,这很丑陋: open class Resource (open var id: Long = 0, open var location: String = "") data class Book ( override var id: Long = …

6
如何在Kotlin中将List转换为Map?
例如,我有一个类似的字符串列表: val list = listOf("a", "b", "c", "d") 我想将其转换为以字符串为键的地图。 我知道我应该使用该.toMap()函数,但是我不知道如何使用该函数,也没有看到任何示例。
169 dictionary  kotlin 

30
错误:任务':app:clean'的执行失败。无法删除文件
我正在尝试重建我的Android Studio Gradle项目(主要包含Kotlin代码),但UnableToDeleteFileException在清理/重建过程中开始抛出: Execution failed for task ':app:clean'. > Unable to delete file: C:\Users\User\KotlinGameEngine\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7\23.0.1\jars\classes.jar 在我尝试更改项目的包结构后,这种情况开始发生。不幸的是,我这样做是通过重命名和移动源文件夹,而不是通过Android Studio进行重构,这是一个坏主意。 我整天都在寻找解决这个问题的方法,而这些都是我一直没有用的方法: 做一个Gradle同步; 重新安装Java JRE和Java SDK; 重新安装最新版本的Android Studio(1.4); 回滚到以前的AS版本(1.3); 使AS缓存无效并重新启动; 删除项目目录中的gradle和.gradle目录; 删除.gradle用户目录中的目录; gradlew clean从AS终端运行; 手动将源复制到新项目中(奇怪的是它在项目中仍然存在...) 我尝试过的工作取得了一些成功,但只能让我再执行一次清理工作并在错误再次发生之前进行重建: 关闭AS,手动删除构建文件,然后再次打开; 查杀java.exe过程,而AS运行(这可以在技术上做到每一次,但它的繁琐,减缓构建过程) 因此,似乎出于某种原因,编译Java进程可能会锁定生成文件,但这也可能与Kotlin有关。我正在处理一个(更成熟的)Java Android项目,尽管在清理它时无法重现此错误。这似乎只发生在我的Kotlin项目上。 更新: 我发现问题是由Kotlin Android插件引起的。当我apply plugin: 'kotlin-android'从模块build.gradle文件中删除该问题时,该问题消失了;当我重新插入它时,该问题又出现了。随时对此提供任何见解。 更新2: 上次更新不是原因。我发现,如果项目包含Kotlin文件,则重建和清理将失败。即使删除了所有Kotlin文件,它仍然会失败,直到后台Java进程被杀死为止,这意味着它对构建文件具有某种锁定。我在此处提交了一个错误,其中包含更多详细信息和重现该错误的步骤:KT-9440


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.