Я пытаюсь выучить Kotlin и модернизировать. Это мой код:
MainActivity
package com.kotlin.retrofitbeginner
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.kotlin.retrofitbeginner.models.Post
import com.kotlin.retrofitbeginner.services.JsonPlaceHolderApi
import kotlinx.android.synthetic.main.activity_main.*
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
abstract class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var retrofit = Retrofit.Builder()
.baseUrl("https://jsonplaceholder.typicode.com/")
.addConverterFactory(GsonConverterFactory.create())
.build()
var jsonPlaceholderApi = retrofit.create(JsonPlaceHolderApi::class.java)
var call: Call<List<Post>> = jsonPlaceholderApi.getPosts()
call.enqueue(object: Callback<List<Post>> {
override fun onFailure(call: Call<List<Post>>, t: Throwable) {
textView_result.text = t.message;
}
override fun onResponse(call: Call<List<Post>>, response: Response<List<Post>>) {
if (!response.isSuccessful()) {
textView_result.text = "Code: ${response.code()}"
return;
}
val posts: List<Post>? = response.body()
if (posts != null) {
for(post in posts) {
var content: String = "";
content += "ID: ${post.id}" +
"\n " +
"USER ID: ${post.userId}" +
"\n " +
"TITLE: ${post.title}" +
"\n " +
"TEXT ${post.text}" +
"\n \n"
textView_result.append(content)
}
}
}
})
}
}
Сообщение
package com.kotlin.retrofitbeginner.models
import com.google.gson.annotations.SerializedName
class Post {
var id: Int? = 0;
var userId: Int? = 0;
var title: String = "";
@SerializedName("body")
var text: String = "";
}
JsonPlaceHolder
package com.kotlin.retrofitbeginner.services
import com.kotlin.retrofitbeginner.models.Post
import retrofit2.Call;
import retrofit2.http.GET
interface JsonPlaceHolderApi {
@GET("posts")
fun getPosts(): Call<List<Post>>
}
Я не знаю, что не так, потому что это дает мне эту ошибку:
2020-03-16 12: 27: 46.696 4830-4830 / com. kotlin .retrofitbeginner E / AndroidRuntime: FATAL EXCEPTION: main Процесс: com. kotlin .retrofitbeginner, PID: 4830 java .lang.RuntimeException: Невозможно создать экземпляр действия ComponentInfo {com. kotlin .retrofitbeginner / com. kotlin .retrofitbeginner.MainActivity}: java .lang.InstantiationException: java .lang.Class не может быть создан в android .app.ActivityThread.performLaunchActivity (ActivityThread. java: 2843) в android .app .ActivityThread.handleLaunchActivity (ActivityThread. java: 3048) в android .app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem. java: 78) в android .app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor. 1040 *: 108) на android .app.servertransaction.TransactionExe cutor.execute (TransactionExecutor. java: 68) в android .app.ActivityThread $ H.handleMessage (ActivityThread. java: 1808) в android .os.Handler.dispatchMessage (Обработчик. java: 106) на android .os.Looper.l oop (Looper. java: 193) на android .app.ActivityThread.main (ActivityThread. java: 6669) на java .lang. refle.Method.invoke (собственный метод) в com. android .internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit. java: 493) в com. android .internal.os.ZygoteInit.main (ZygoteInit . java: 858) Причина: java .lang.InstantiationException: java .lang.Class не может быть создан в java .lang.Class.newInstance (собственный метод) в android .app.AppComponentFactory .instantiateActivity (AppComponentFactory. java: 69) в androidx.core.app.CoreComponentFactory.instantiateActivity (CoreComponentFactory. java: 45) при android .app.Instrumentation.newActivity (Инструментарий. java: 1215 в) android .app.ActivityThread.performLaunchActivity (ActivityThread. java: 2831) в android .app.ActivityThread.handleLaunchActivit y (ActivityThread. java: 3048) в android .app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem. java: 78) в android .app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor. java: 108) в android .app.servertransaction.TransactionExecutor.execute (TransactionExecutor. java: 68) в android .app.ActivityThread $ H.handleMessage (ActivityThread. java: 1808) в android .os .Handler.dispatchMessage (Обработчик. java: 106) в android .os.Looper.l oop (Looper. java: 193) в android .app.ActivityThread.main (ActivityThread. java: 6669) в java .lang.reflect.Method.invoke (собственный метод) в com. android .internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit. java: 493) в com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 858)
Не могли бы вы помочь мне с этим? Спасибо.