我有一個在 onCreate 中啟動的配接器和一個在 onViewCreated 中啟動的串列視圖,我正在嘗試 setAdapter,但我無法在 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)
}
}
uj5u.com熱心網友回復:
您的adapter物件是一個區域變數,onCreate(...)因此無法在其他地方訪問。您可以將其移動到這樣的類變數中:
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)
}
}
我還添加了requireContext()對您的ArrayAdapter建構式的呼叫,因為您不想在MainActivity那里創建一個新實體。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/480440.html
