Questions tagged «kotlin»

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

20
不幸的是MyApp已停止。我该如何解决?
我正在开发一个应用程序,每次运行它时,都会收到消息: 不幸的是,MyApp已停止。 我该怎么解决? 关于这个问题-显然是受什么是堆栈跟踪的启发,以及如何使用它来调试应用程序错误?,有很多问题表明它们的应用已崩溃,没有任何进一步的细节。这个问题的目的是指导Android新手如何自行解决问题或提出正确的问题。




7
如何检查“ lateinit”变量是否已初始化?
我想知道是否有一种方法可以检查lateinit变量是否已初始化。例如: class Foo() { private lateinit var myFile: File fun bar(path: String?) { path?.let { myFile = File(it) } } fun bar2() { myFile.whateverMethod() // May crash since I don't know whether myFile has been initialized } }
428 kotlin 


9
警报管理器示例
我想在我的项目中实现计划功能。所以我用Google搜索了一个警报管理器程序,但是找不到任何示例。 有人可以通过基本的警报管理器程序帮助我吗?

30
科特林的瓦尔和瓦尔
var和valKotlin 和有什么不一样? 我已经通过这个链接: https://kotlinlang.org/docs/reference/properties.html 如该链接所述: 只读属性声明的完整语法在两个方面不同于可变的声明:它以val而不是var开头,并且不允许使用setter。 但就在之前,有一个使用setter的示例。 fun copyAddress(address: Address): Address { val result = Address() // there's no 'new' keyword in Kotlin result.name = address.name // accessors are called result.street = address.street // ... return result } var和之间的确切区别是val什么? 为什么我们都需要? 这不是Kotlin中变量的重复,这与Java有所不同。var vs val?我在问与文档中特定示例相关的疑问,而不仅仅是一般情况。
288 kotlin 

8
Kotlin-使用“ by lazy”和“ lateinit”进行属性初始化
在Kotlin中,如果您不想在构造函数内部或在类主体顶部初始化类属性,则基本上有以下两个选项(来自语言参考): 延迟初始化 lazy()是一个函数,它需要一个lambda并返回Lazy的一个实例,该实例可以充当实现lazy属性的委托:对get()的第一次调用执行传递给lazy()的lambda并记住结果,随后的调用get()只是返回记忆的结果。 例 public class Hello { val myLazyString: String by lazy { "Hello" } } 因此,无论在哪里,对myLazyString的第一个调用和后续调用都将返回“ Hello” 后期初始化 通常,必须在构造函数中初始化声明为非空类型的属性。但是,这经常不方便。例如,可以通过依赖项注入或在单元测试的设置方法中初始化属性。在这种情况下,您不能在构造函数中提供非null的初始值设定项,但在引用类的主体内的属性时仍要避免执行null检查。 要处理这种情况,可以使用lateinit修饰符标记该属性: public class MyTest { lateinit var subject: TestSubject @SetUp fun setup() { subject = TestSubject() } @Test fun test() { subject.method() } } 该修饰符只能用于在类主体内声明的var属性(不适用于主构造函数),并且只能在该属性没有自定义getter或setter的情况下使用。该属性的类型必须为非null,并且不能为原始类型。 那么,由于这两个选项都可以解决相同的问题,因此如何在这两个选项之间正确选择?
279 properties  kotlin 

6
“ const”和“ val”有什么区别?
我最近读过有关该const关键字的信息,我很困惑!我const和val关键字之间找不到任何区别,我的意思是我们可以将它们都用作一个不可变的变量,还有什么我想念的吗?
276 constants  kotlin 

10
无法将类型强制转换为“类型”,因为“变量”是可变属性,到那时可能已经更改了
然后Kotlin新手问,“为什么下面的代码不编译?”: var left: Node? = null fun show() { if (left != null) { queue.add(left) // ERROR HERE } } 无法智能地将其强制转换为“节点”,因为“左”是一个可变属性,可能此时已更改 我得到的left是可变变量,但是我正在显式检查left != null并且left是类型,Node所以为什么不能将其智能转换为该类型? 我该如何解决?:)
275 kotlin 

5
Kotlin和新的ActivityTestRule:@Rule必须是公共的
我正在尝试对Kotlin中的android应用进行UI测试。由于新系统使用ActivityTestRule,所以我无法使其工作:它可以正确编译,并且在运行时得到: java.lang.Exception: The @Rule 'mActivityRule' must be public. at org.junit.internal.runners.rules.RuleFieldValidator.addError(RuleFieldValidator.java:90) at org.junit.internal.runners.rules.RuleFieldValidator.validatePublic(RuleFieldValidator.java:67) at org.junit.internal.runners.rules.RuleFieldValidator.validateField(RuleFieldValidator.java:55) at org.junit.internal.runners.rules.RuleFieldValidator.validate(RuleFieldValidator.java:50) at org.junit.runners.BlockJUnit4ClassRunner.validateFields(BlockJUnit4ClassRunner.java:170) at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:103) at org.junit.runners.ParentRunner.validate(ParentRunner.java:344) at org.junit.runners.ParentRunner.<init>(ParentRunner.java:74) at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:55) at android.support.test.internal.runner.junit4.AndroidJUnit4ClassRunner.<init>(AndroidJUnit4ClassRunner.java:38) at android.support.test.runner.AndroidJUnit4.<init>(AndroidJUnit4.java:36) at java.lang.reflect.Constructor.constructNative(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:417) at android.support.test.internal.runner.junit4.AndroidAnnotatedBuilder.buildAndroidRunner(AndroidAnnotatedBuilder.java:57) at android.support.test.internal.runner.junit4.AndroidAnnotatedBuilder.runnerForClass(AndroidAnnotatedBuilder.java:45) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29) at org.junit.runner.Computer.getRunner(Computer.java:38) at org.junit.runner.Computer$1.runnerForClass(Computer.java:29) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) at …

9
仅从Android N开始支持默认接口方法
我已升级到android studio 3.1,但出现以下错误: Default interface methods are only supported starting with Android N (--min-api 24): void android.arch.lifecycle.DefaultLifecycleObserver.onCreate(android.arch.lifecycle.LifecycleOwner) Message{kind=ERROR, text=Default interface methods are only supported starting with Android N (--min-api 24): void android.arch.lifecycle.DefaultLifecycleObserver.onCreate(android.arch.lifecycle.LifecycleOwner), sources=[Unknown source file], tool name=Optional.of(D8)} 这是我的gradle配置: compileSdkVersion 27 //buildToolsVersion '27.0.3' defaultConfig { minSdkVersion 16 targetSdkVersion 27 multiDexEnabled true …
262 android  java-8  kotlin 



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.