Невозможно создать экземпляр компонента ComponentInfo в Kotlin - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь выучить 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)

Не могли бы вы помочь мне с этим? Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...