Tag: 安卓

在kotlin中重新创建对象

我有一个简单的问题:需要重新创建一个对象与其他参数。 有这个对象: object NetworkClient { var BASE_URL = “http://google.ru” //we can take this from another class or Pref’s const val API_BASE_URL = “$BASE_URL/api/” val httpClient = OkHttpClient.Builder() val client: Client var retrofit: Retrofit init { val builder = Retrofit.Builder() .baseUrl(API_BASE_URL) .addConverterFactory(GsonConverterFactory.create()) retrofit = builder.client(httpClient.build()).build() client = retrofit.create(Client::class.java) } } 在极少数情况下,您需要将BASE_URL动态更改为另一个字符串并重新创建客户端等。我知道如何做到这一点,但是我的解决方案非常辛苦 – 需要重新使用此类的所有地方,但是我希望创建此对象具体参数。 你如何看待这个问题?

Kotlin执行可选操作

我有一个可选的高阶函数(() – >单位)模型? 当我想要调用这个函数,我想知道,我怎么称呼它甚至是可选的。 我知道这个工程 model.action?.invoke() 有一些类似Swift的东西,我可以这样做: model.action?() 我知道,我也可以做: model.action?.let { action() } 也许这最后一个是“更好”的路要走。 你知道一些“更好”的方法吗? 谢谢

Kotlin中未解决的参考异步

我正在尝试在Kotlin执行网络操作异步。 我读它可以做异步使用asyncfunction。 我得到下面的错误,谁能猜到可能是什么问题? 未解决的参考:异步 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) async() { val forecastWeather = ForecastRequest(“302015”).execute() Log.d(“Test”, forecastWeather.toString()) } } ForecastRequest.kt class ForecastRequest(val zipcode: String) { companion object { private val APP_ID = “XYZ” private val URL = “http://api.openweathermap.org/data/2.5/” + “forecast/daily?mode=json&units=metric&cnt=7” private val COMPLETE_URL = “$URL&APPID=$APP_ID&q=” } fun execute(): ForecastResponse { val forecastJsonStr = […]

应用程序没有安装错误在android中kotlin gradle 3.0.0-alpha5

apply plugin: ‘com.android.application’ apply plugin: ‘kotlin-android’ apply plugin: ‘kotlin-android-extensions’ android { compileSdkVersion 25 buildToolsVersion “26.0.0” defaultConfig { applicationId “//” minSdkVersion 16 targetSdkVersion 25 versionCode 1 versionName “1.0” testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner” } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } } and project level buildscript { ext.kotlin_version = ‘1.1.2-4’ repositories { google() jcenter() } […]

在kotlin的for循环中使用when()。 when语句下面的行不被执行

我在Android项目中编码Kotlin。 我在for()循环中使用了一个when()语句。 在循环的每次迭代中需要执行的w​​hen()语句的下面有一些行,但是会跳过,并且控制流回到循环的下一个循环。 这是我所做的简化版本。 for (i : Int in 0..10) { val data = Data() when(i) { 0 -> data.att1 = “sample0” 1 -> data.att1 = “sample1” 2 -> data.att1 = “sample2” .. .. } dataArray.add(i, data) // LINE NOT EXECUTED } 我对Kotlin有点新鲜,所以我不确定这是否是Kotlin的正常行为。 先谢谢您的帮助。

kotlin可见性修饰符不匹配

这是官方文件说的。 但是当我做这样的事情: var human : Human? = null 并反编译成java代码,我发现它实际上是 @Nullable private Human human; 写这个没用 public var human : Human? = null 但是当我写这个: lateinit var human : Human 它这次成为公众 @NotNull public Human human; 当我使用Dagger2时,这是个大问题 在Dagger2中,注入的属性必须公开,但是如果我写var human : Human? = nullvariablesvar human : Human? = null var human : Human? = null它将无法建立。 所以,这是一个kotlin的错误? 或官方文件的错误?

firebase数据库:与Kotlin委托属性的模型

我正在使用Kotlin对象来处理我的Firebase数据库模型,如指南中所述 。 我有很多字段存储为字符串,但实际上是枚举,所以为了types安全我有枚举字段在模型中,再加上一个字符串委托属性,返回firebase存储的值(如问我建议问了一些问题前)。 现在,如果我在代码中获取/设置字符串委托,这些字段可以工作,但是当从/从数据库的json格式转换时,firebase库似乎跳过它们。 一个简单的例子: abstract class BaseModel { @Exclude open var path: String? = null // fails even if I delete this field! } class Weight() : BaseModel() { constructor(v: Double, u: WeightUnit) : this() { value = v unitEnum = u } var value: Double = 0.0 @Exclude var unitEnum: WeightUnit = WeightUnit.KG […]

我们如何在不使用第三方库的情况下在kotlin中定义id?

在java中,我们使用findviewbyid来定义id。 我想知道如何在kotlin中定义id而不使用任何第三方库。

用Kotlin在android中声明variablestypes的正确方法是什么?

我想声明一些variablestypes的gatter和setter模型。 我可以声明简单和干净的代码,如在Java中? private String firstName; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } 因为当它转换成Kotlin它看起来像: private var firstName: String? = null fun getfirstName(): String { return firstName } fun setfirstName(firstName: String) { this.firstName = firstName } 什么是正确和最清洁的方式?

为什么不在Kotlin的Android 4.x下运行应用程序?

有一个由Kotlin制作的非常简单的应用程序,它可以在Android Studio 3.0中的Android 8.0,Android 6.0和Android 5.1下正常工作 但当我在Android 4.1下运行应用程序时,出现错误消息“java.lang.RuntimeException:无法实例化活动ComponentInfo {info.dodata.mirror / ui.UIMain}:java.lang.ClassNotFoundException:ui.UIMain”。 2(这是一个真正的手机)和Android 4.2.2 您可以通过https://www.dropbox.com/s/9f0yxp5pqqxtcxq/Mirror.zip?dl=0下载应用程序进行测试 UIMain.kt package ui import android.os.Bundle import android.support.v7.app.AppCompatActivity import info.dodata.mirror.R class UIMain : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.layout_main) } } AndroidManifest.xml中 build.gradle(模块:应用程序) apply plugin: ‘com.android.application’ apply plugin: ‘kotlin-android’ apply plugin: ‘kotlin-android-extensions’ android { compileSdkVersion 26 flavorDimensions “default” defaultConfig […]