小编nok*_*ula的帖子

Kotlin用于android和静态最终内部类

我正在尝试在Kotlin上重写我的Android应用程序,并且在转换ContentProvider合同类时我遇到了问题.所以我有简单的合同类(内容类型和内容uris的默认内容被省略):

public final class Contract {
    public static final class Contacts {
        public static final String NAME = "Name"
        public static final String BIRTH = "Birth"
        public static final String IMAGE = "Image"
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,在Kotlin我们没有静态成员.而不是这个,我们有"伴侣对象".所以在将它转换为Kotlin后,我有这个代码:

object BirthdayContract {
    class Contacts : BaseColumns {
        companion object {
            val NAME = "Name"
            val BIRTH = "Birth"
            val IMAGE = "Image"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我试图访问像Contract.Contacts.NAME这样的字段时,我有错误:"NAME有私人访问权限".更改可见性修饰符不起作用.那么有什么方法可以在Kotlin中使用这样的契约类,或者更好地将它保存在Java中?

UPD 我认为我应该澄清一下 - 我的来电代码也在Kotlin中.问题出在@JvmField注释中.有了它,我可以直接访问静态成员,而无需调用getter.

java android kotlin

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

GoogleSignInClient 返回 8(内部错误)


我正在尝试将我的游戏连接到 Google Play 游戏服务,但是当我尝试登录时,它总是向我返回错误代码 8(内部错误)。
该代码是从Google 示例中复制粘贴的

lateinit var signInClient: GoogleSignInClient

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.layout_settings)
    settings_login.setOnClickListener { login() }
    signInClient = GoogleSignIn.getClient(this,
            GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN).build()
    )
}

private fun login() {
    startActivityForResult(signInClient.signInIntent, 9001)
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode != 9001) {
        return
    }

    val task = GoogleSignIn.getSignedInAccountFromIntent(intent)

    try {
        val account = task.getResult(ApiException::class.java)
        onConnected(account)
    } catch (apiException: ApiException) {
        var message: String? = apiException.message
        if (message …
Run Code Online (Sandbox Code Playgroud)

android google-play-services google-play-games

3
推荐指数
1
解决办法
950
查看次数