Kotlin recyclerview给了我空指针例外

使用Java后,我开始学习Kotlin,试图用Kotlin创建回收站,但每次都要到达这个代码:

recyclerview!!.layoutManager = LinearlayoutManager(context) 

里面的一个片段,它总是为我返回null,并通过转换现有的Java代码在Android Studio中使用转换器返回error.Can任何人都可以帮助我为什么这总是发生? 下面的代码是我目前的片段代码:

 import android.os.Bundle import android.support.v4.app.Fragment import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import kotlinx.android.synthetic.main.fragment_notes.* import java.sql.Timestamp class NotesFragment : Fragment() { companion object { fun newInstance(): NotesFragment { return NotesFragment() } } override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view = inflater?.inflate(R.layout.fragment_notes, container, false) val messageList : MutableList = prepareMessage() recycler_view!!.layoutManager = LinearLayoutManager(context) recycler_view!!.adapter = NotesAdapter(context) (recycler_view!!.adapter as NotesAdapter).setMessage(messageList) return view } private fun prepareMessage(): MutableList { var messageList : MutableList = ArrayList() for(i in 0..10){ val timestamp: Long = System.currentTimeMillis()/1000L val message = message(0, "Judul Catatan ke $i", resources.getString(R.string.lipsum), timestamp ) messageList.add(message) } return messageList } } 

尝试这个…

您应该在访问其属性之前声明您的recyclerview对象。

…..

  private var recycler_view: RecyclerView? = null 

…..

 override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view = inflater?.inflate(R.layout.fragment_notes, container, false) recycler_view = view.findViewById(R.id.your_recycler_id) recycler_view?.layoutManager = LinearLayoutManager(context) recycler_view?.adapter = NotesAdapter(context) val messageList : MutableList = prepareMessage() (recycler_view?.adapter as NotesAdapter).setMessage(messageList) return view } 

你有没有像这样声明你的recylerview?

  polishrecyler = view .findViewById(R.id.polish_recyler) as RecyclerView