kotlin 片段错误 NullPointerException
kotlin fragment error NullPointerException
我的完整代码
class BlankFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val rootView = inflater.inflate(R.layout.mainex, container, false)
val groupAdapter = GroupAdapter<ViewHolder>().apply {
spanCount = 2
}
recycler_view.apply {
//error NullPointerException in this line
layoutManager = GridLayoutManager(rootView.context, groupAdapter.spanCount).apply {
spanSizeLookup = groupAdapter.spanSizeLookup
}
adapter = groupAdapter
}
var headerTab: ArrayList<mTop>
headerTab = arguments?.getSerializable("headertab") as ArrayList<mTop>
for (h in 0 until headerTab.size) {
val header = headerTab.get(h).kategori
ExpandableGroup(ExpandableHeaderItem(header), true).apply {
for (c in 0 until headerTab[h].sub.size) {
val gambar = (headerTab[h].sub).get(c).gambar
val nama_menu = (headerTab[h].sub).get(c).nama_menu
add(Section(FancyItem(gambar, nama_menu)))
}
groupAdapter.add(this)
}
}
我正在尝试在 tablayout 片段中显示 recyclerview
并且发生错误,可能问题来自 rootView.context
layoutManager = GridLayoutManager(rootView.context, groupAdapter.spanCount).apply {
spanSizeLookup = groupAdapter.spanSizeLookup
}
谢谢 :)(抱歉,我的英语不好)
您在创建视图之前将 LayoutManager 设置为 recyclerView。您应该在 onViewCreated() 方法或 xml 文件中执行此操作。仅将 onCreateView() 用于膨胀视图。然后使用 onViewCreated() 进行您需要对视图进行的其他设置。
完成。这是我的完整修复代码,带有单独的 onCreateView 和 onViewCreate。谢谢大家
class FragBaru : Fragment() {
private lateinit var rv: RecyclerView
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.mainex, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
rv = view.findViewById(R.id.recycler_view)
val groupAdapter = GroupAdapter<ViewHolder>().apply {
spanCount = 2
}
rv.apply {
layoutManager = GridLayoutManager(rootView.context, groupAdapter.spanCount).apply {
spanSizeLookup = groupAdapter.spanSizeLookup
}
adapter = groupAdapter
}
var headerTab: ArrayList<mTop>
headerTab = arguments?.getSerializable("headertab") as ArrayList<mTop>
for (h in 0 until headerTab.size) {
val header = headerTab.get(h).kategori
ExpandableGroup(ExpandableHeaderItem(header), true).apply {
for (c in 0 until headerTab[h].sub.size) {
val gambar = (headerTab[h].sub).get(c).gambar
val nama_menu = (headerTab[h].sub).get(c).nama_menu
add(Section(FancyItem(gambar, nama_menu)))
}
groupAdapter.add(this)
}
}
}
companion object {
fun newInstance(headertab: ArrayList<mTop>): FragBaru {
val f = FragBaru()
val args = Bundle()
args.putSerializable("headertab", headertab)
f.setArguments(args)
return f
}
}
}
我的完整代码
class BlankFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val rootView = inflater.inflate(R.layout.mainex, container, false)
val groupAdapter = GroupAdapter<ViewHolder>().apply {
spanCount = 2
}
recycler_view.apply {
//error NullPointerException in this line
layoutManager = GridLayoutManager(rootView.context, groupAdapter.spanCount).apply {
spanSizeLookup = groupAdapter.spanSizeLookup
}
adapter = groupAdapter
}
var headerTab: ArrayList<mTop>
headerTab = arguments?.getSerializable("headertab") as ArrayList<mTop>
for (h in 0 until headerTab.size) {
val header = headerTab.get(h).kategori
ExpandableGroup(ExpandableHeaderItem(header), true).apply {
for (c in 0 until headerTab[h].sub.size) {
val gambar = (headerTab[h].sub).get(c).gambar
val nama_menu = (headerTab[h].sub).get(c).nama_menu
add(Section(FancyItem(gambar, nama_menu)))
}
groupAdapter.add(this)
}
}
我正在尝试在 tablayout 片段中显示 recyclerview 并且发生错误,可能问题来自 rootView.context
layoutManager = GridLayoutManager(rootView.context, groupAdapter.spanCount).apply {
spanSizeLookup = groupAdapter.spanSizeLookup
}
谢谢 :)(抱歉,我的英语不好)
您在创建视图之前将 LayoutManager 设置为 recyclerView。您应该在 onViewCreated() 方法或 xml 文件中执行此操作。仅将 onCreateView() 用于膨胀视图。然后使用 onViewCreated() 进行您需要对视图进行的其他设置。
完成。这是我的完整修复代码,带有单独的 onCreateView 和 onViewCreate。谢谢大家
class FragBaru : Fragment() {
private lateinit var rv: RecyclerView
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.mainex, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
rv = view.findViewById(R.id.recycler_view)
val groupAdapter = GroupAdapter<ViewHolder>().apply {
spanCount = 2
}
rv.apply {
layoutManager = GridLayoutManager(rootView.context, groupAdapter.spanCount).apply {
spanSizeLookup = groupAdapter.spanSizeLookup
}
adapter = groupAdapter
}
var headerTab: ArrayList<mTop>
headerTab = arguments?.getSerializable("headertab") as ArrayList<mTop>
for (h in 0 until headerTab.size) {
val header = headerTab.get(h).kategori
ExpandableGroup(ExpandableHeaderItem(header), true).apply {
for (c in 0 until headerTab[h].sub.size) {
val gambar = (headerTab[h].sub).get(c).gambar
val nama_menu = (headerTab[h].sub).get(c).nama_menu
add(Section(FancyItem(gambar, nama_menu)))
}
groupAdapter.add(this)
}
}
}
companion object {
fun newInstance(headertab: ArrayList<mTop>): FragBaru {
val f = FragBaru()
val args = Bundle()
args.putSerializable("headertab", headertab)
f.setArguments(args)
return f
}
}
}