![](/img/trans.png)
[英]java.lang.IllegalStateException: Fragment not attached to a context
[英]android - java.lang.IllegalStateException: Fragment not attached to a context
我在做什么
我正在創建一個應用程序,它有一個 RecyclerView 作為菜單。 由於我的應用程序有本地化,我需要使用字符串,保存在 strings.xml 中。
有什么問題?
嘗試將字符串值傳遞給參數會導致應用程序崩潰
我試過什么
代碼:
frgSettings.kt
class frgSettings : Fragment() {
var settingsList = listOf(
dataItemsSettings(PUT STRING 1 HERE, PUT STRING 2 HERE, R.drawable.ic_colored_color_lens),
dataItemsSettings(PUT STRING 1 HERE, PUT STRING 2 HERE, R.drawable.ic_colored_view_carousel),
)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
retainInstance = true
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? = inflater.inflate(R.layout.fragment_settings, container, false)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
rvSettings.apply {
layoutManager = LinearLayoutManager(activity)
adapter = adapterSettings(settingsList)
}
}
}
適配器設置.kt
class adapterSettings(
var settingsList: List<dataItemsSettings>
) : RecyclerView.Adapter<adapterSettings.SettingsViewHolder>() {
inner class SettingsViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SettingsViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_settings, parent, false)
return SettingsViewHolder(view)
}
override fun getItemCount(): Int {
return settingsList.size
}
override fun onBindViewHolder(holder: SettingsViewHolder, position: Int) {
holder.itemView.apply {
rvTitle.text = settingsList[position].stringTitle
rvDescription.text = settingsList[position].stringDescription
rvIcon.setImageResource(settingsList[position].itemIcon)
}
}
}
數據設置.kt
data class dataItemsSettings (
var stringTitle: String,
var stringDescription: String,
val itemIcon: Int
)
嘗試在onViewCreated
方法中初始化settingsList
變量:
//...
lateinit var settingsList: List<dataItemsSettings>
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
settingsList = listOf(
dataItemsSettings(PUT STRING 1 HERE, PUT STRING 2 HERE, R.drawable.ic_colored_color_lens),
dataItemsSettings(PUT STRING 1 HERE, PUT STRING 2 HERE, R.drawable.ic_colored_view_carousel),
)
rvSettings.apply {
layoutManager = LinearLayoutManager(activity)
adapter = adapterSettings(settingsList)
}
}
// ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.