Tag: 安卓

Kotlin REPL与Android类unStub!编辑

我喜欢Idea / Android-Studio中的Kotlin REPL,但作为一名Android开发者,我经常遇到Stub! 问题在这里。 在编写单元测试时,我正在使用unmock来解决这个问题。 有没有一种方法可以使用Kotlin REPL插件的相同方法? [

Kotlin:Sugar ORM坚持了@忽略属性

在我的Android应用程序中,我正在使用Kotlin和SugarORM,并且遇到了一个问题,试图阻止某些属性被持久化。 具有讽刺意味的是,在Kotlin类中使用@com.orm.dsl.Ignore注解似乎被忽略。 举个例子, 1)让我们宣布两个看似相同的模型: // JavaUser.java public class JavaUser extends SugarRecord { public String login = "login"; @Ignore public String password = "password"; } // KotlinUser.kt class KotlinUser : SugarRecord() { var login: String = "login" @Ignore var password: String = "password" } 2)坚持自己的实例 JavaUser().save() KotlinUser().save() 3)并看看实际上持续的是什么: sqlite> select * from java_user; ID|LOGIN 1|login sqlite> […]

咖啡测试Kotlin

每当我尝试测试我的Android应用程序,并重写我在Kotlin的测试,我总是得到: 未找到类:“my.package.modules.container.ContainerViewInstrumentedTest” 空的测试套件。 我正在尝试一切,使浓咖啡看到我的测试…但没有运气。 有谁知道什么是错的?

kotlin验证输入字段

为了Android开发,我正在从Java转移到Kotlin。 我想检查EditText中的字段是否为空。 所以我试图做到这一点: override fun checkFields() { val username = username.text.toString().trim().takeUnless { username.text.isNullOrEmpty() } ?: presenter.usernameError() val password = password.text.toString().trim().takeUnless { password.text.isNullOrEmpty() } ?: presenter.passwordError() presenter.signInWithUsernameAndPassword(username as String,password as String) } 但是有两个问题: 如果用户名/密码为空,它也会传递给signInWithUsernameAndPassword 它崩溃,因为给我这个错误: java.lang.ClassCastException:kotlin.Unit不能转换为java.lang.String 为什么? takeUnless{}将字符串转换为单位? 谢谢

在Kotlin中改进实现 – 方法默认参数

我正在尝试在Kotlin中 实现Android的Retrofit的入门 。 我已经创建了Retrofit类的实例,但是当我尝试在没有回调参数的接口中调用端点方法时,Kotlin似乎并不喜欢它。 这里是所有相关的代码。 数据类: data class GitHubRepo(val id:Int,val name:String) 界面: interface GitHubClient { @GET("/users/{user}/repos") fun reposForUser(@Path("user") user: String,callback: Callback<List<GitHubRepo>> ) } 改造实施: val httpClient = OkHttpClient.Builder() val builder = Retrofit.Builder().baseUrl(API_BASE_URL) .addConverterFactory(GsonConverterFactory.create()) val retrofit = builder.client(httpClient.build()).build() val client = retrofit.create(GitHubClient::class.java) val call = client.reposForUser("fs-opensource") <– Error – No value passed for parameter 'callback' 从教程: […]

Kotlin启动应用程序崩溃

我的应用程序是用kotlin构建的,这里是我的build.gradle文件: compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" 和我的工作区的build.gradle文件: ext.kotlin_version = '1.1.3-2' ext.kotlin_plugin_version = '1.1.1' dependencies { classpath "io.realm:realm-gradle-plugin:3.4.0" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_plugin_version" } 在我的项目中,我已经用java8和jack,所以gradle-plugin版本只能是1.1.1 当我开始我的应用程序,它随机崩溃,这里是日志: FATAL EXCEPTION: main Process: com.ss.android.caijing.stock.debug, PID: 31962 java.lang.NoClassDefFoundError: Failed resolution of: Lkotlin/jvm/internal/Intrinsics; at com.ss.android.caijing.stock.main.MainActivity.initData(MainActivity.kt:33) at com.ss.android.caijing.stock.base.BaseActivity.onCreate(BaseActivity.java:25) at android.app.Activity.performCreate(Activity.java:6367) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110) at com.bytedance.frameworks.plugin.hook.InstrumentationHook$PluginInstrumentation.callActivityOnCreate(InstrumentationHook.java:248) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2404) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2511) at android.app.ActivityThread.access$900(ActivityThread.java:165) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1375) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:150) at android.app.ActivityThread.main(ActivityThread.java:5621) […]

Android + Kotlin – 项目不再建设

您好kotlin用户和维护者, 由于我已经将Intellij IDEA更新到2016版的最新补丁,所以在尝试编译我的android项目时遇到了这个问题。 java.lang.IllegalStateException at org.jetbrains.kotlin.types.SubstitutionUtils.fillInDeepSubstitutor(SubstitutionUtils.java:80) at org.jetbrains.kotlin.types.SubstitutionUtils.fillInDeepSubstitutor(SubstitutionUtils.java:96) at org.jetbrains.kotlin.types.SubstitutionUtils.buildDeepSubstitutionMultimap(SubstitutionUtils.java:65) at org.jetbrains.kotlin.resolve.DeclarationsChecker.checkSupertypesForConsistency(DeclarationsChecker.kt:241) at org.jetbrains.kotlin.resolve.DeclarationsChecker.checkTypeParameterConstraints(DeclarationsChecker.kt:394) at org.jetbrains.kotlin.resolve.DeclarationsChecker.checkFunction(DeclarationsChecker.kt:660) at org.jetbrains.kotlin.resolve.DeclarationsChecker.process(DeclarationsChecker.kt:123) at org.jetbrains.kotlin.resolve.BodyResolver.resolveBodies(BodyResolver.java:233) at org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer.analyzeDeclarations(LazyTopDownAnalyzer.kt:192) at org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel.analyzeDeclarations(LazyTopDownAnalyzerForTopLevel.java:74) at org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel.analyzeFiles(LazyTopDownAnalyzerForTopLevel.java:66) at org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(TopDownAnalyzerFacadeForJVM.java:145) at org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationWithCustomContext(TopDownAnalyzerFacadeForJVM.java:78) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.analyze(KotlinToJVMBytecodeCompiler.kt:290) at org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.kt:129) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyze(KotlinToJVMBytecodeCompiler.kt:283) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyzeAndGenerate(KotlinToJVMBytecodeCompiler.kt:269) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileBunchOfSources(KotlinToJVMBytecodeCompiler.kt:194) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:196) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:49) at org.jetbrains.kotlin.cli.common.CLICompiler.exec(CLICompiler.java:181) at org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile.callCompiler(Tasks.kt:87) at org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile.compile(Tasks.kt:63) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) […]

Kotlin懒惰的默认属性

在Kotlin中,我如何定义一个具有惰性默认值的变量? 比如val就是这样的: val toolbarColor by lazy {color(R.color.colorPrimary)} 我想要做的是,有一个属性( toolbarColor )的默认值,我可以改变这个值的其他任何东西。 可能吗? 编辑:这是部分把戏。 var toolbarColor = R.color.colorPrimary get() = color(field) set(value){ field = value } 有没有可能通过写作来缓解这一点 var toolbarColor = color(R.color.colorPrimary) set(value){ field = value } 在默认值的计算方式懒惰? 目前它不会工作,因为color()需要一个只在稍后初始化的Context 。

在Kotlin中创建一个抽象类的实例

我是Kotlin的新手,我试图在Android项目中使用它。 我有这个代码: public var oneTouchTimer: CountDownTimer = CountDownTimer(500, 100) { override fun onTick(l: Long) { } override fun onFinish() { } } 这是抛出错误: Cannot create an instance of an abstract class. 基本上我试图创建一个CountDownTimer的实例,并不知道如何将其转换为Kotlin。 这是Java中的代码: CountDownTimer oneTouchTimer = new CountDownTimer(500, 100) { @Override public void onTick(long l) { } @Override public void onFinish() { } };

Kotlin中的Room Persistence lib实现

我在kotlin中为我的数据库实现实现了Room persistence lib。 以下是我的Entity , Dao和Database类: Food.kt @Entity class Food(@ColumnInfo(name = "food_name") var foodName: String, @ColumnInfo(name = "food_desc") var foodDesc: String, @ColumnInfo(name = "protein") var protein: Double, @ColumnInfo(name = "carbs") var carbs: Double, @ColumnInfo(name = "fat") var fat: Double) { @ColumnInfo(name = "id") @PrimaryKey(autoGenerate = true) var id: Long = 0 @ColumnInfo(name = "calories") var […]