小编Bak*_*aii的帖子

如何将主键作为Room Persistence lib的自动增量

我正在创建一个Entity(Room Persistence lib)类Food,我想把它foodId作为自动增量.

@Entity
class Food(var foodName: String, var foodDesc: String, var protein: Double, var carbs: Double, var fat: Double)
{
    @PrimaryKey
    var foodId: Int = 0
    var calories: Double = 0.toDouble()
}
Run Code Online (Sandbox Code Playgroud)

如何设置foodId自动增量字段?

android kotlin android-room

151
推荐指数
8
解决办法
7万
查看次数

Kotlin中OnclickListener方法的区别

我正在学习Kotlin.在此之前,我曾使用Java进行Android开发.Kotlin是一门很好的学习语言.我在使用时感到困惑setOnClickListener(View.OnClickListener).我在Android Studio上看到了两个提示.

图片

我知道如何工作或定义它们.

第一种实施方式 OnClickListerner

 send_button.setOnClickListener(object : View.OnClickListener{
       override fun onClick(p0: View?) {
           TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
       }
   })
Run Code Online (Sandbox Code Playgroud)

这是第二种实施方式 OnClickListener

 send_button.setOnClickListener {
        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
    }
Run Code Online (Sandbox Code Playgroud)

我理解第二种方法基于lambda.但我无法正确理解这些方法.

所以,我的问题是:这些方法有什么区别?如果它们不同,哪一个更好,为什么?

android kotlin

12
推荐指数
2
解决办法
3232
查看次数

我在kotlin安全通话中遇到过载分辨率模糊错误

我有一个可以为空的字符串变量ab.如果我toUpperCase在为其分配null后通过安全调用操作符调用,则kotlin会给出错误.

fun main(args: Array<String>){
    var ab:String? = "hello"
    ab = null
    println(ab?.toUpperCase())
}
Run Code Online (Sandbox Code Playgroud)

错误:( 6,16 )
重载分辨率歧义:
@InlineOnly public inline fun Char.toUpperCase():在kotlin.text中定义的char
@InlineOnly public inline fun String.toUpperCase():在kotlin.text中定义的字符串

这有什么问题?

nullable kotlin

12
推荐指数
2
解决办法
1395
查看次数

在Java中调用Kotlin时,如何使用默认值省略构造函数参数?

我的kotlin文件:

class Chat(var name: String, var age: Int? = 18)
Run Code Online (Sandbox Code Playgroud)

我的java文件只能这样做:

new Chat("John",18);
Run Code Online (Sandbox Code Playgroud)

但我可以写这个吗?

new Chat("John");
Run Code Online (Sandbox Code Playgroud)

java kotlin

10
推荐指数
1
解决办法
1439
查看次数

在Kotlin的建造者模式

我是kotlin世界的新手.我有一个用Java编写的现有构建器,并希望将其转换为Kotlin,因为我将项目迁移到Android中的kotlin.但是,Android Studio内置工具似乎有一些错误,然后转换后的代码不可编译.它显示我UserBuilder班级中的变量无法访问.

这是教程中的Java代码

public class Person {
    private final String firstName; // required
    private final String lastName; // required
    private final int age; // optional
    private final String phone; // optional
    private final String address; // optional

    private Person(UserBuilder builder) {
        this.firstName = builder.firstName;
        this.lastName = builder.lastName;
        this.age = builder.age;
        this.phone = builder.phone;
        this.address = builder.address;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public int getAge() {
        return …
Run Code Online (Sandbox Code Playgroud)

kotlin

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

完成处理程序Android Kotlin

对不起,如果先前已经问过这个问题,我真的找不到任何甚至不能同样的东西!我很抱歉,如果问题是愚蠢的,我是一名iOS开发者,我在Android中有点迷失...

所以我使用Fuel Library(https://github.com/kittinunf/Fuel)来从API中获取JSON数据......在Swift中有一个叫做完成处理程序的东西,无论何时函数完成,它都会返回它并且立即运行其中的代码.这是Swift中的一个例子:

func hardProcessingWithString(input: String, completion: (result: String) -> Void) {
    ...
    completion("we finished!")
}
Run Code Online (Sandbox Code Playgroud)

我需要做的是用我在Kotlin中的这个功能做类似的事情.

fun recomendationsData() {

    Fuel.get("https://rss.itunes.apple.com/api/v1/us/apple-music/hot-tracks/10/explicit.json").response { request, response, result ->
                    println(request)
                    println(response)
                    val (bytes, error) = result
                    if (bytes != null) {
                        val str = String(bytes)
                        val obj = JSONObject(str)
                        val resultsP = obj.getJSONObject("feed")
                        val results = resultsP.getJSONArray("results")

                        for (i in 0..(results.length() - 1)) {
                            val o = results.getJSONObject(i)
                            trackName1.add(o.getString("name"))
                            trackArtist1.add(o.getString("artistName"))
                            trackImage1.add(o.getString("artworkUrl100"))
                        }


                    }
                }
}
Run Code Online (Sandbox Code Playgroud)

我读过一些叫做"回调"的东西,但我真的不明白它是如何工作的,也不知道如何实现它(任务必须是异步完成的).

再一次非常感谢你!

问候

android android-asynctask kotlin

8
推荐指数
1
解决办法
4205
查看次数

kotlin中的全局对象声明

如何像在java 中一样在kotlin中 全局声明对象TextView tv;.

或者在不同方法/函数中调用相同变量的任何方法.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val textView: TextView = findViewById(R.id.texfirst) as TextView 

    textView.setOnClickListener {
        Toast.makeText(applicationContext,"Welcome to Kotlin ! $abc "+textView.text, Toast.LENGTH_LONG).show()
    }

    myFunction(textView)
}

fun myFunction(mtextv : TextView) {
    Toast.makeText(applicationContext,"This is  new  $abc "+mtextv.text, Toast.LENGTH_LONG).show()
}
Run Code Online (Sandbox Code Playgroud)

看上面的代码我用参数分开了函数TextView.我想要TextView第二个功能的对象.我的问题是:是否可以在没有参数的情况下调用函数,并且我能够获取TextView对象myFunction().

在android工作室学习kotlin.希望问题很清楚.

declaration kotlin android-studio

6
推荐指数
1
解决办法
5714
查看次数

android-kotlin错误:未解析的引用数据绑定和ActivityMainBinding

我使用的是Android Studio 3.0 Canary 6版本.我在我的类中启用了dataBinding,代码没有显示任何错误.但是,当我构建APK时,构建失败并显示以下错误:

Error:(8, 37) Unresolved reference: databinding  
Error:(22, 26) Unresolved reference: ActivityMainBinding  
Error:(38, 50) Unresolved reference: ActivityMainBinding  
Error:(43, 52) Unresolved reference: ActivityMainBinding  
Error:(46, 52) Unresolved reference: ActivityMainBinding  
Error:(49, 52) Unresolved reference: ActivityMainBinding  
Error:(52, 52) Unresolved reference: ActivityMainBinding  
Error:(55, 52) Unresolved reference: ActivityMainBinding  
Error:(58, 52) Unresolved reference: ActivityMainBinding  
Error:(61, 52) Unresolved reference: ActivityMainBinding  
Error:(64, 52) Unresolved reference: ActivityMainBinding  
Error:(67, 52) Unresolved reference: ActivityMainBinding  
Error:(70, 52) Unresolved reference: ActivityMainBinding  
Error:(73, 52) Unresolved reference: ActivityMainBinding  
Error:Execution failed for task ':app:compileDebugKotlin'. …
Run Code Online (Sandbox Code Playgroud)

data-binding android kotlin build.gradle android-databinding

4
推荐指数
1
解决办法
5419
查看次数

标签不表示 forEach 中的循环

我从 Kotlin 中的循环继续,但我从工作室收到警告,标签不表示循环。有人能告诉我语法有什么问题吗?

这是代码段

 newRooms.forEach roomloop@ { wallRoom: WallRoom ->

          val index =  rooms.indexOf(wallRoom)

            if(index!=-1)
            {
                val room = rooms[index] //get the corresponding room.
                //check if the last session is same in the room.
                if(wallRoom.topics.last().fetchSessions().last()==room.topics.last().fetchSessions().last())
                {
                   continue@roomloop
                }
Run Code Online (Sandbox Code Playgroud)

android kotlin

2
推荐指数
1
解决办法
1885
查看次数

使用mapTo为ArrayList赋值

以前我使用的是这段代码:

private val mItems = ArrayList<Int>()
(1..item_count).mapTo(mItems) { it }

/*
 mItems will be: "1, 2, 3, 4, 5, ..., item_count"
*/
Run Code Online (Sandbox Code Playgroud)

现在,我使用的是一个类而不是Int,但该类具有Int名称的成员id.

class ModelClass(var id: Int = 0, var status: String = "smth")
Run Code Online (Sandbox Code Playgroud)

那么我如何使用这种方法以ArrayList类似的方式填充?

//?
private val mItems = ArrayList<ModelClass>()
(1..item_count).mapTo(mItems) { mItems[position].id = it } // Something like this
//?
Run Code Online (Sandbox Code Playgroud)

arraylist kotlin

2
推荐指数
1
解决办法
516
查看次数

在Kotlin中的省略运算符Java等价

在Java中,可以执行以下操作:void function(Url... urls).它可以使用1..n网址.问题是,是否有可能与Kotlin做同样的事情.

java ellipsis variadic-functions kotlin

2
推荐指数
2
解决办法
899
查看次数

Kotlin:无法在类定义中声明类型为mutableListOf的参数

我不能mutableListOf在构造函数中使用它.但我可以在课堂上使用它.这是一个已知的错误还是我们不能这样做?

这是我的代码:

class Model (val title: String, var listString: kotlin.collections.mutableListOf<String>, var selectedIndex: Int = 0) : FormFieldModel(FormFieldType.SELECT_BOX) {
    var iad = mutableListOf<String>()
}
Run Code Online (Sandbox Code Playgroud)

我进入Unresolved reference: mutableListOf了构造函数.

android kotlin

-1
推荐指数
1
解决办法
212
查看次数