标签: kotlin

如何在Kotlin延迟后调用一个函数?

作为标题,有没有办法在延迟后调用一个函数(例如1秒)Kotlin

android kotlin

110
推荐指数
10
解决办法
9万
查看次数

Kotlin:Interface ...没有构造函数

我正在将我的一些Java代码转换为Kotlin,我不太了解如何实例化Kotlin代码中定义的接口.作为一个例子,我有一个接口(在Java代码中定义):

public interface MyInterface {
    void onLocationMeasured(Location location);
}
Run Code Online (Sandbox Code Playgroud)

然后在我的Kotlin代码中进一步实例化这个接口:

val myObj = new MyInterface { Log.d("...", "...") }
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是,当我将MyInterface转换为Kotlin时:

interface MyInterface {
    fun onLocationMeasured(location: Location)
}
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:Interface MyListener does not have constructors当我尝试实例化它时 - 虽然在我看来除了语法之外没有任何改变.我是否误解了Kotlin界面的工作原理?

java kotlin

109
推荐指数
5
解决办法
3万
查看次数

Kotlin中的单个感叹号

Kotlin中的单个感叹号是什么意思?我已经看过几次,特别是在使用Java API时.但我在文档和StackOverflow中都找不到它.

kotlin

108
推荐指数
5
解决办法
2万
查看次数

如何在Kotlin中访问"Activity.this"?

我有这段Java代码:

MaterialDialog builder = new MaterialDialog.Builder(MainActivity.this)
Run Code Online (Sandbox Code Playgroud)

我想在Kotlin中获取MainActivity对象.自动转换中断MainActivity.this.

java android kotlin

104
推荐指数
5
解决办法
3万
查看次数

斯威夫特如果在科特林发表声明

在Kotlin中有一个等同于下面的Swift代码吗?

if let a = b.val {

}
else {

}
Run Code Online (Sandbox Code Playgroud)

kotlin

104
推荐指数
7
解决办法
4万
查看次数

有没有一种方便的方法在Android中使用Kotlin创建Parcelable数据类?

我目前正在Java项目中使用优秀的AutoParcel,这有助于创建Parcelable类.

现在,我考虑用于我的下一个项目的Kotlin具有数据类的概念,它自动生成equals,hashCode和toString方法.

有没有一种方便的方法可以方便地使Kotlin数据类Parcelable(不手动实现方法)?

android parcelable kotlin

103
推荐指数
10
解决办法
4万
查看次数

财产必须初始化或是抽象的

这一定是个愚蠢的问题,但我对Kotlin来说真的很新,我找不到任何解决方案.

如何声明类字段?就像我们可以在java中一样:

protected SharedPreferences mSharedPreferences;
Run Code Online (Sandbox Code Playgroud)

后来在onCreate():

mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
Run Code Online (Sandbox Code Playgroud)

现在我可以在任何我想要的地方使用它(在这个基本活动的子类中).

我试着在Kotlin做同样的事情:

protected var sharedPreferences : SharedPreferences
Run Code Online (Sandbox Code Playgroud)

并在onCreate():

sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
Run Code Online (Sandbox Code Playgroud)

但我得到一个警告:"财产必须初始化或是抽象的"

android kotlin

103
推荐指数
2
解决办法
3万
查看次数

Kotlin中Java静态最终字段的等价物是什么?

在Java中,要声明常量,您可以执行以下操作:

class Hello  {
 public static final int MAX_LEN = 20;
}
Run Code Online (Sandbox Code Playgroud)

Kotlin的等价物是什么?

java kotlin

103
推荐指数
3
解决办法
4万
查看次数

更新到 Android Studio 4.2 后无法创建新的 Kotlin 项目

我更新了 Android Studio 4.2,但无法创建新项目 kotlin

A problem occurred configuring root project 'My Application'.
> Could not resolve all artifacts for configuration ':classpath'.
> Could not find org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.0-release-764.
 Searched in the following locations:
   - https://dl.google.com/dl/android/maven2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.5.0-release- 
764/kotlin-gradle-plugin-1.5.0-release-764.pom
   - https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.5.0-release-764/kotlin-gradle-plugin-1.5.0-release-764.pom
 Required by:
     project :

Possible solution:
- Declare repository providing the artifact, see the documentation at 
 https://docs.gradle.org/current/userguide/declaring_repositories.html
Run Code Online (Sandbox Code Playgroud)

android kotlin android-studio android-studio-4.2

103
推荐指数
8
解决办法
2万
查看次数

未解决的参考文献:kotlinx

我试图在Android Studio中试用Kotlin和Kotlin Android扩展程序.我已经在Ubuntu 14.04上的Android Studio v 1.5.1和OS X El Capitan上的Android Studio v 1.5.1中尝试了这一点,结果相同.

这是我在做的事情:

  1. 我安装了Kotlin插件1.0.0-beta-35950-IJ141-11
  2. 创建一个新的空白Android项目
  3. 将MainActivity文件转换为Kotlin(通过help-> findaction->将文件转换为kotlin)
  4. 为Kotlin配置项目

然后我进入生成的content_main.xml文件并为"Hello World!"添加一个id(hello).TextView中.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.gmail.npnster.mykotlinfirstproject.MainActivity"
    tools:showIn="@layout/activity_main">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:id="@+id/hello"
        />
</RelativeLayout>  
Run Code Online (Sandbox Code Playgroud)

然后在转换后的MainActivity中添加一行来设置TextView.(如下所示).Android Studio然后提示我(通过alt-enter)插入此行(也显示如下)

import kotlinx.android.synthetic.main.content_main.*
Run Code Online (Sandbox Code Playgroud)

所以在这一点一切似乎罚款

但是当我尝试编译这个时,我得到了

Unresolved reference: kotlinx
Unresolved reference: kotlinx
Unresolved reference: hello
Run Code Online (Sandbox Code Playgroud)

注意,我并没有安装科特林的Android扩展插件.截至几天前,现在应该将其包含在主插件中并标记为已过时.(事实上​​,如果您在使用最新插件时尝试安装它,则不会安装任何新内容)

有谁看到我做错了什么?

主要活动

import android.os.Bundle
import android.support.design.widget.FloatingActionButton
import android.support.design.widget.Snackbar
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.Toolbar
import android.view.View
import …
Run Code Online (Sandbox Code Playgroud)

kotlin android-studio kotlin-android-extensions

102
推荐指数
9
解决办法
7万
查看次数