Android fragments 片段中arrayadapter上的Kotlin崩溃:onCreate()之前的活动无法使用系统服务

Android fragments 片段中arrayadapter上的Kotlin崩溃:onCreate()之前的活动无法使用系统服务,android-fragments,kotlin,android-listview,android-arrayadapter,Android Fragments,Kotlin,Android Listview,Android Arrayadapter,我必须为学校做一个简单的申请,但由于某些原因,我的应用程序在出现以下错误时不断崩溃: System services not available to Activities before onCreate() 经过一点调试,我发现它在ArrayAdapter创建时崩溃。我尝试了很多东西,但出于某种原因,它总是以同样的错误崩溃 我已经尝试了很多东西,包括: -在MainActivity中运行它(产生最佳结果) -直接在onCreate()中运行它 -在onViewCreated()中运行它 -还

我必须为学校做一个简单的申请,但由于某些原因,我的应用程序在出现以下错误时不断崩溃:

System services not available to Activities before onCreate()
经过一点调试,我发现它在ArrayAdapter创建时崩溃。我尝试了很多东西,但出于某种原因,它总是以同样的错误崩溃

我已经尝试了很多东西,包括: -在MainActivity中运行它(产生最佳结果) -直接在onCreate()中运行它 -在onViewCreated()中运行它 -还有其他一些地方

我想做一个简单的朋友应用程序,人们可以在我的手机上输入他们的数据,这没什么了不起的。我需要从url中检索数据,我使用myjson.org创建了一个简单的json(这就是分配)。我从url获得的所有数据都是正确的,并且列表也是完整的。我只是不知道如何将它附加到列表中

package com.vb.vriendenboekje8.ui.home

import android.app.Activity
import android.content.Context
import android.os.AsyncTask
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.ListView
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import com.vb.vriendenboekje8.MainActivity
import com.vb.vriendenboekje8.R
import kotlinx.android.synthetic.main.fragment_home.*
import kotlinx.android.synthetic.main.fragment_home.view.*
import org.json.JSONArray
import org.json.JSONObject
import java.net.URL

class HomeFragment : Fragment()
{
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View?
    {
        val view = inflater.inflate(R.layout.fragment_home, container, false)

        var lstFriends : ListView = view.findViewById(R.id.lstFriends)

        LoadJsonTask(lstFriends).execute("<url to json here>")

        return view
    }

    class LoadJsonTask(lstFriends : ListView) : AsyncTask<String, Void, String>()
    {
        var lstFriends : ListView

        init
        {
            this.lstFriends = lstFriends
        }

        //load http request and get Json data
        override fun doInBackground(vararg params: String?) : String
        {
            var json : String

            val stringURL = params[0]
            json = URL(stringURL).readText()

            return json
        }

        override fun onPostExecute(result: String?)
        {
            super.onPostExecute(result)

            val friendsJson = JSONArray(result)
            var friendsList : MutableList<String> = mutableListOf()

            //clear the friends list
            friendsList.clear()

            //add names to list
            for (i in 0..(friendsJson.length()-1))
            {
                val friend : JSONObject = friendsJson[i] as JSONObject
                friendsList.add(friend.get("Naam") as String)
            }

            val adapter = ArrayAdapter<String>(FragmentActivity(), android.R.layout.simple_list_item_1, friendsList) //where the app crashes
            this.lstFriends.setAdapter(adapter)
        }
    }
}

package com.vb.vriendenboekje8.ui.home
导入android.app.Activity
导入android.content.Context
导入android.os.AsyncTask
导入android.os.Bundle
导入android.view.LayoutInflater
导入android.view.view
导入android.view.ViewGroup
导入android.widget.ArrayAdapter
导入android.widget.ListView
导入androidx.fragment.app.fragment
导入androidx.fragment.app.FragmentActivity
导入com.vb.vriendenboekje8.main活动
导入com.vb.vriendenboekje8.R
将kotlinx.android.synthetic.main.fragment\u导入主页*
导入kotlinx.android.synthetic.main.fragment_home.view*
导入org.json.JSONArray
导入org.json.JSONObject
导入java.net.URL
类HomeFragment:Fragment()
{
覆盖创建视图(
充气机,
容器:视图组?,
savedInstanceState:捆绑?
):查看?
{
val视图=充气机。充气(R.layout.fragment\u home,container,false)
var lstFriends:ListView=view.findViewById(R.id.lstFriends)
LoadJsonTask(lstFriends).execute(“”)
返回视图
}
类LoadJsonTask(lstFriends:ListView):AsyncTask()
{
变量:列表视图
初始化
{
this.lstFriends=lstFriends
}
//加载http请求并获取Json数据
重写fun doInBackground(vararg参数:String?):String
{
var-json:String
val stringURL=params[0]
json=URL(stringURL).readText()
返回json
}
重写onPostExecute(结果:字符串?)
{
super.onPostExecute(结果)
val friendsJson=JSONArray(结果)
var-friendsList:MutableList=mutableListOf()
//清除好友列表
friendsList.clear()
//将姓名添加到列表中
对于(0中的i…(friendsJson.length()-1))
{
val-friend:JSONObject=friendsJson[i]作为JSONObject
friendsList.add(friend.get(“Naam”)作为字符串)
}
val adapter=ArrayAdapter(FragmentActivity(),android.R.layout.simple_list_item_1,friendsList)//应用程序崩溃的地方
此.lstFriends.setAdapter(适配器)
}
}
}
我的片段布局:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView
        android:id="@+id/lstFriends"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

完全错误:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.vb.vriendenboekje8, PID: 31342
    java.lang.IllegalStateException: System services not available to Activities before onCreate()
        at android.app.Activity.getSystemService(Activity.java:6649)
        at android.view.LayoutInflater.from(LayoutInflater.java:284)
        at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:216)
        at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:210)
        at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:196)
        at com.vb.vriendenboekje8.ui.home.HomeFragment$LoadJsonTask.onPostExecute(HomeFragment.kt:76)
        at com.vb.vriendenboekje8.ui.home.HomeFragment$LoadJsonTask.onPostExecute(HomeFragment.kt:39)
        at android.os.AsyncTask.finish(AsyncTask.java:755)
        at android.os.AsyncTask.access$900(AsyncTask.java:192)
        at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:772)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7682)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
E/AndroidRuntime:致命异常:主
进程:com.vb.vriendenboekje8,PID:31342
java.lang.IllegalStateException:onCreate()之前的活动无法使用系统服务
位于android.app.Activity.getSystemService(Activity.java:6649)
位于android.view.LayoutInflater.from(LayoutInflater.java:284)
在android.widget.ArrayAdapter。(ArrayAdapter.java:216)
在android.widget.ArrayAdapter。(ArrayAdapter.java:210)
在android.widget.ArrayAdapter.(ArrayAdapter.java:196)
在com.vb.vriendenboekje8.ui.home.HomeFragment$LoadJsonTask.onPostExecute(HomeFragment.kt:76)
在com.vb.vriendenboekje8.ui.home.HomeFragment$LoadJsonTask.onPostExecute(HomeFragment.kt:39)
位于android.os.AsyncTask.finish(AsyncTask.java:755)
在android.os.AsyncTask.access$900(AsyncTask.java:192)
在android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:772)上
位于android.os.Handler.dispatchMessage(Handler.java:107)
位于android.os.Looper.loop(Looper.java:214)
位于android.app.ActivityThread.main(ActivityThread.java:7682)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
如果有人有任何想法或看到我做错了什么,请告诉我


PS我是kotlin和android开发的新手

ArrayAdapter(FragmentActivity()…
有点奇怪(不仅如此)。也许
ArrayAdapter(context!!…
?@DrawnAccoon用view更改它。context成功了!谢谢!