无法编译Kotlin代码
问题描述:
我想实现用kotlin编写的Facebook登录。下面的代码工作正常:无法编译Kotlin代码
包social.social
import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import com.facebook.*
import com.facebook.login.LoginResult
import com.facebook.login.LoginManager
import com.facebook.login.widget.LoginButton
import org.json.JSONObject
import java.util.*
class MainActivity : AppCompatActivity() {
private var callbackManager: CallbackManager? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
callbackManager = CallbackManager.Factory.create()
var loginBtn: LoginButton = findViewById(R.id.login_button) as LoginButton
loginBtn.setReadPermissions(Arrays.asList("public_profile","email","user_photos"))
loginBtn.registerCallback(callbackManager, object : FacebookCallback<LoginResult> {
override fun onCancel() {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun onError(error: FacebookException) {
print("error" +error.message)
}
override fun onSuccess(result: LoginResult) {
GraphRequest.newMeRequest(result.accessToken, GraphRequest.GraphJSONObjectCallback {
obj: JSONObject, response: GraphResponse ->
println(obj.toString())
println(obj.getString("email"))})
println("successful" + result.accessToken)
}
})
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
callbackManager!!.onActivityResult(requestCode, resultCode, data)
}
}
我尝试添加参数GraphRequest所以我需要将它存储到一个变量,像这样:
val request: GraphRequest = GraphRequest.newMeRequest(result.accessToken, GraphRequest.GraphJSONObjectCallback {
obj: JSONObject, response: GraphResponse ->
println(obj.toString())
println(obj.getString("email"))})
request.executeAsync()
但现在它编译失败
错误:执行任务':app:compileDebugJavaWithJavac'失败。
Unable to read class file: 'C:\projects\social\app\build\tmp\kotlin-classes\debug\social\social\MainActivity$onCreate$1$onSuccess$1.class'
答
我是一个初学者科特林但似乎科特林代码的图形要求创造了一个汇编error.So,不如把它写在Java和它转换为科特林和重建+清洁你的代码或者更新Kotlin插件。
嗯..终于修好了。原来我只需要运行gradle clean。 –
很高兴听到@ Karlo – Haileapp