Tag: 科特林

kotlin和ArgumentCaptor – IllegalStateException

我有一个通过ArgumentCaptor捕获类参数的问题。 我的测试类看起来像这样: @RunWith(RobolectricGradleTestRunner::class) @Config(sdk = intArrayOf(21), constants = BuildConfig::class) class MyViewModelTest { @Mock lateinit var activityHandlerMock: IActivityHandler; @Captor lateinit var classCaptor: ArgumentCaptor<Class> @Captor lateinit var booleanCaptor: ArgumentCaptor private var objectUnderTest: MyViewModel? = null @Before fun setUp() { initMocks(this) … objectUnderTest = MyViewModel(…) } @Test fun thatNavigatesToAddListScreenOnAddClicked(){ //given //when objectUnderTest?.addNewList() //then verify(activityHandlerMock).navigateTo(classCaptor.capture(), booleanCaptor.capture()) var clazz = […]

在Android模拟器上调用REST API会导致应用程序崩溃

我对android studio比较陌生。 我正尝试构建一个非常简单的应用程序,使用Bittrex交换API获取加密货币的价格。 然而,每次我尝试从URL获取信息,我的应用程序崩溃。 顺便说一句,我正在使用Kotlin。 我有麻烦解决这个问题,因为我不知道如何在调试模式下运行模拟器,只是编译器。 这是我的代码: package com.example.sebastian.cryptoapp import android.support.v7.app.AppCompatActivity import android.os.Bundle import java.net.URL import java.net.MalformedURLException import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { fun search(): String { //read in value var market = searchBar.getText().toString() //output text from URL query val result = URL(“https://bittrex.com/api/v1.1/public/getticker?market=” + market).readText() return result } fun getPrice(): String { //calling search […]

通用对值types的意图额外

很简单的问题:是否有可能find第二对参数(字符串,INT,捆绑等)通用的意图额外types? inline fun Context.startActivity(vararg params: Pair) { val intent = Intent(this, T::class.java) params.forEach { intent.putExtra(it.first, it.second) } startActivity(intent) } 谢谢

groupValues只返回重复模式的最后一次出现

println(Regex(“(A|B)+”).matchEntire(“AB”)!!.groupValues) 打印[AB, B]但我希望结果是[AB, A, B] 。 这是行为吗? 有没有办法获得[AB, A, B] ?

IllegalArgumentException:savedInstanceState指定为非空为空

当我启动MainActivity时出现一个奇怪的错误: 06-16 16:01:05.193 2083-2083/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.android.example.github, PID: 2083 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.example.github/com.android.example.github.ui.MainActivity}: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2666) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6121) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) Caused by: java.lang.IllegalArgumentException: Parameter specified […]

错误:(2,0)无法find方法’org.gradle.api.internal.file.DefaultSourceDirectorySet

我最近升级我的android工作室到3.0.1当我尝试创建新的项目我得到下面的错误我的代码运行良好的旧版本我也升级了Gradle插件 错误 Error:(2, 0) Unable to find method ‘org.gradle.api.internal.file.DefaultSourceDirectorySet.(Ljava/lang/String;Lorg/gradle/api/internal/file/FileResolver;)V’. Possible causes for this unexpected error include:Gradle’s dependency cache may be corrupt (this sometimes occurs after a network connection timeout.) Re-download dependencies and sync project (requires network)The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem. Stop […]

如何用Kotlin做JEE CDIdependency injection

我已经将正式编写成Java的JEE应用程序中的REST资源转换为Kotlin。 该应用程序以Weld作为dependency injection框架在Wildfly Application Server中运行。 这是我提出的最终实现: @Path(“/myResource”) open class MyResource { @Context private lateinit var context: SecurityContext open protected setSecurityContext(securityContext: SecurityContext) { this.context = securityContext } @POST @Path(“/change”) @Transactional @Consumes(MediaType.APPLICATION_JSON) open internal fun change(data: MyChangeData, @Context uriInfo: UriInfo): Response { // … } } 二传手是为了测试的目的。 随着Mockito或其他模拟框架,可以设置私人领域这不是必要的。 我在这个实现中遇到了一些问题: 我不得不改变类和所有open方法,以允许CDI容器为这个bean创建一个代理。 据我了解这个话题,没有其他办法可以让Weld在不允许inheritance的情况下完成工作吗? 一般来说,Kotlin使用私有字段支持的给定修饰符(public / private / protected)为属性生成setter和getter。 但是在使用lateinit […]

替代function重载

下面的代码 fun getValue(): Int { return 42 } fun getValue(): String { return “Foo” } 给出以下错误: 有冲突的重载 :本地最终乐趣getValue():在本地最终乐趣中定义的字符串getValue():在main中定义的Int。 有没有办法避免重命名的function之一?

在Android Studio中Kotlin构建失败

错误: Error:Execution failed for task ‘:synclib:compileKotlin’. > com.intellij.openapi.fileTypes.LanguageFileType.(Lcom/intellij/lang/Language;)V synclib模块的build.gradle文件: apply plugin: ‘java’ apply plugin: ‘kotlin’ compileJava { sourceCompatibility = 1.7 targetCompatibility = 1.7 } dependencies { compile fileTree(dir: ‘libs’, include: [‘*.jar’]) testCompile ‘junit:junit:4.12’ // compile ‘com.android.support:appcompat-v7:23.1.1’ compile ‘com.firebase:firebase-client-jvm:2.2.3’ compile “org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version” compile project(‘:jamodel’) } buildscript { ext.kotlin_version = ‘1.0.0’ repositories { mavenCentral() } dependencies { classpath […]

Android Kotlin创建类实现Parcelable在writeToParcel方法的“覆盖”中给出一个错误

为了使用Parcelable,我遵循了Kotlin 1.1.4的这个版本: https : //blog.jetbrains.com/kotlin/2017/08/kotlin-1-1-4-is-out/ 在项目中添加这一行 androidExtensions { experimental = true } 然后定义一个类: @Parcelize class User(val firstName: String, val lastName: String) : Parcelable writeToParcel()和createFromParcel()方法是自动创建的 override fun writeToParcel(parcel: Parcel, flags: Int) { … } 但是在消息的“覆盖”关键字中仍然存在错误 OVERRIDING_WRITE_TO_PARCEL_IS_NOT_ALLOWED:不允许覆盖“writeToParcel”。 改为使用“Parceler”随播对象 你能告诉我正确的方法吗? 编辑:只有默认构造函数中定义的属性将添加到包,其他不是? 我在这堂课看到这个警告。 PROPERTY_WONT_BE_SERIALIZED:属性不会被序列化为“包裹”。 添加“@Transient”注释以删除警告