我无法引用适配器

I cant refrence the adapter

我有一个在 onCreate 中启动的适配器和一个在 onViewCreated 中启动的列表视图 我正在尝试设置适配器,但无法在 onViewCreated 中传递适配器。 我尝试了多种方法,比如将它们从 onCreate 移动到 onViewCreated,但如果我在其他任何地方初始化适配器,应用程序似乎会崩溃,我不能在任何地方使用 findViewById,但在 onViewCreated

class Istoric : Fragment() {
    var array= arrayOf("item1","item2")



    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val adapter = ArrayAdapter(MainActivity(),R.layout.listview_item,array)
    }

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_istoric, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        val lv1: ListView = view.findViewById(R.id.lv)
        lv1.setAdapter(adapter)
    }
}

您的 adapter 对象是 onCreate(...) 的局部变量,因此无法在其他地方访问。您可以像这样将它移动到 class 变量:

class Istoric : Fragment() {
    var array= arrayOf("item1","item2")

    private lateinit var adapter: ArrayAdapter

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        adapter = ArrayAdapter(requireContext(), R.layout.listview_item, array)
    }

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_istoric, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        val lv1: ListView = view.findViewById(R.id.lv)
        lv1.setAdapter(adapter)
    }
}

我还添加了对 ArrayAdapter 构造函数的 requireContext() 调用,因为您不想在那里创建 MainActivity 的新实例。