指定为非空的参数为空:
Parameter specified as non-null is null :
您好,我最近将我的项目从 java 转换为 kotlin,遇到了很多问题,这就是其中之一
我不知道到底想说什么,也不知道它指向错误所在的正确行,因为在第 12 行它指向的是“import com.example.myappnotfinal.R”
错误
Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter menuInfo
at com.example.myappnotfinal.AdaptersAndMore.PostAdapter$PostViewHolder.onCreateContextMenu(Unknown Source:12)
PostAdapter.kt
class PostAdapter /* ShimmerFrameLayout shimmerFrameLayout; */(
var mcontext: Context, var mUploads: List<Upload>
) : RecyclerView.Adapter<PostAdapter.PostViewHolder>() {
private val postDiffUtil = PostDiffUtil()
val postListDiffer = AsyncListDiffer(this, postDiffUtil)
private var mListener: OnItemClickListener? = null
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PostViewHolder {
val view: View = LayoutInflater.from(parent.context)
.inflate(R.layout.post_item_container_profile, parent, false)
return PostViewHolder(view)
}
override fun onBindViewHolder(holder: PostViewHolder, position: Int) {
val uploadCurrent = postListDiffer.currentList[position]
val shimmer = ColorHighlightBuilder()
.setBaseColor(Color.parseColor("#F3F3F3"))
.setBaseAlpha(1f)
.setHighlightColor(Color.parseColor("#E7E7E7"))
.setHighlightAlpha(1f)
.setDropoff(50f)
.build()
val shimmerDrawable = ShimmerDrawable()
shimmerDrawable.setShimmer(shimmer)
Glide.with(mcontext)
.load(uploadCurrent.getmImageUrl())
.diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
.placeholder(shimmerDrawable)
.centerCrop()
.fitCenter()
.into(holder.imageView)
}
override fun getItemCount(): Int {
return mUploads.size
}
fun setOnItemClickListener(listener: OnItemClickListener?) {
mListener = listener
}
fun setUploads(upload: List<Upload>) {
mUploads = upload
}
interface OnItemClickListener {
fun onClick(view: View?)
fun onItemClick(position: Int)
fun onDeleteClick(position: Int)
}
inner class PostViewHolder internal constructor(itemView: View) :
RecyclerView.ViewHolder(itemView), View.OnClickListener, OnCreateContextMenuListener,
MenuItem.OnMenuItemClickListener {
var imageView: ShapeableImageView = itemView.findViewById(R.id.imagePost)
override fun onClick(v: View) {
if (mListener != null) {
val position = adapterPosition
if (position != RecyclerView.NO_POSITION) {
mListener!!.onItemClick(position)
}
}
}
override fun onCreateContextMenu(menu: ContextMenu, v: View, menuInfo: ContextMenuInfo) {
val delete = menu.add(Menu.NONE, 2, 2, "Delete")
delete.setOnMenuItemClickListener(this)
}
override fun onMenuItemClick(item: MenuItem): Boolean {
if (mListener != null) {
val position = adapterPosition
if (position != RecyclerView.NO_POSITION) {
if (item.itemId == 2) {
mListener!!.onDeleteClick(position)
return true
}
}
}
return false
}
init {
itemView.setOnClickListener(this)
itemView.setOnCreateContextMenuListener(this)
}
}
companion object
}
将 override fun onCreateContextMenu(menu: ContextMenu, v: View, menuInfo: ContextMenuInfo)
更改为 override fun onCreateContextMenu(menu: ContextMenu, v: View, menuInfo: ContextMenuInfo?)
因为 ContextMenuInfo
可以是 nullable
您好,我最近将我的项目从 java 转换为 kotlin,遇到了很多问题,这就是其中之一
我不知道到底想说什么,也不知道它指向错误所在的正确行,因为在第 12 行它指向的是“import com.example.myappnotfinal.R”
错误
Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter menuInfo
at com.example.myappnotfinal.AdaptersAndMore.PostAdapter$PostViewHolder.onCreateContextMenu(Unknown Source:12)
PostAdapter.kt
class PostAdapter /* ShimmerFrameLayout shimmerFrameLayout; */(
var mcontext: Context, var mUploads: List<Upload>
) : RecyclerView.Adapter<PostAdapter.PostViewHolder>() {
private val postDiffUtil = PostDiffUtil()
val postListDiffer = AsyncListDiffer(this, postDiffUtil)
private var mListener: OnItemClickListener? = null
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PostViewHolder {
val view: View = LayoutInflater.from(parent.context)
.inflate(R.layout.post_item_container_profile, parent, false)
return PostViewHolder(view)
}
override fun onBindViewHolder(holder: PostViewHolder, position: Int) {
val uploadCurrent = postListDiffer.currentList[position]
val shimmer = ColorHighlightBuilder()
.setBaseColor(Color.parseColor("#F3F3F3"))
.setBaseAlpha(1f)
.setHighlightColor(Color.parseColor("#E7E7E7"))
.setHighlightAlpha(1f)
.setDropoff(50f)
.build()
val shimmerDrawable = ShimmerDrawable()
shimmerDrawable.setShimmer(shimmer)
Glide.with(mcontext)
.load(uploadCurrent.getmImageUrl())
.diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
.placeholder(shimmerDrawable)
.centerCrop()
.fitCenter()
.into(holder.imageView)
}
override fun getItemCount(): Int {
return mUploads.size
}
fun setOnItemClickListener(listener: OnItemClickListener?) {
mListener = listener
}
fun setUploads(upload: List<Upload>) {
mUploads = upload
}
interface OnItemClickListener {
fun onClick(view: View?)
fun onItemClick(position: Int)
fun onDeleteClick(position: Int)
}
inner class PostViewHolder internal constructor(itemView: View) :
RecyclerView.ViewHolder(itemView), View.OnClickListener, OnCreateContextMenuListener,
MenuItem.OnMenuItemClickListener {
var imageView: ShapeableImageView = itemView.findViewById(R.id.imagePost)
override fun onClick(v: View) {
if (mListener != null) {
val position = adapterPosition
if (position != RecyclerView.NO_POSITION) {
mListener!!.onItemClick(position)
}
}
}
override fun onCreateContextMenu(menu: ContextMenu, v: View, menuInfo: ContextMenuInfo) {
val delete = menu.add(Menu.NONE, 2, 2, "Delete")
delete.setOnMenuItemClickListener(this)
}
override fun onMenuItemClick(item: MenuItem): Boolean {
if (mListener != null) {
val position = adapterPosition
if (position != RecyclerView.NO_POSITION) {
if (item.itemId == 2) {
mListener!!.onDeleteClick(position)
return true
}
}
}
return false
}
init {
itemView.setOnClickListener(this)
itemView.setOnCreateContextMenuListener(this)
}
}
companion object
}
将 override fun onCreateContextMenu(menu: ContextMenu, v: View, menuInfo: ContextMenuInfo)
更改为 override fun onCreateContextMenu(menu: ContextMenu, v: View, menuInfo: ContextMenuInfo?)
因为 ContextMenuInfo
可以是 nullable