J'aimerais appeler le gestionnaire de fragment de support dans mon recyclisteView.adapter après l'événement de clic afin de passer à un fragment différent. Mon approche: mais je reçois l'erreur suivante: p> kotlin.typecastException: NULL ne peut pas être lancé sur le type non nul p>
blockQuote> Pouvez-vous m'aider? p> p>
4 Réponses :
Ceci est dû au fait que votre Au lieu de cela, je vous recommanderais de définir une interface dans votre adaptateur. À partir de votre activité code> code>, fournissez une implémentation de cette interface à votre adaptateur qui effectuera le puis, dans l'activité instance code> dans l'adaptateur n'est pas garantie d'être une activité code>. Il pourrait potentiellement être un contextwrapper code> détenant l'activité code> comme base contexte code>. Tenter de déballer ce serait fragile. fragmenttransaction code>. Par exemple: p> code> issualisation myAdapter code>: p>
Je vous suggère de gérer votre transaction de fragment dans votre fragment / activité code>. Cela vous aiderait à avoir un code plus propre et à utiliser le contexte dans fragment / activité code> est beaucoup plus facile. Essayez de définir l'interface entre votre adaptateur et votre fragment et appelez votre méthode d'interface dans l'adaptateur et implémentez l'interface dans activité / fragment code>. Là, vous pouvez accéder au contexte facilement. P>
Obtenez l'activité ou le fragment comme argument dans votre adaptateur.
class ArticleAdapter(private val articleActivity: ArticleActivity, private val docs: List<ArticleResult.ArticleDoc>) : RecyclerView.Adapter<ArticleAdapter.Holder>() {
override fun onCreateViewHolder(p0: ViewGroup, p1: Int): Holder = Holder(LayoutInflater.from(p0.context).inflate(R.layout.row_general2, p0, false))
override fun getItemCount(): Int = docs.size
override fun onBindViewHolder(holder: Holder, position: Int) {
articleActivity.supportFragmentManager
}
class Holder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val textViewTitleRow = itemView.findViewById<TextView>(R.id.textViewTitleRow)!!
val textView1Row = itemView.findViewById<TextView>(R.id.textView1Row)!!
val textView2Row = itemView.findViewById<TextView>(R.id.textView2Row)!!
val imageViewDownloadRow = itemView.findViewById<ImageView>(R.id.imageViewDownloadRow)!!
val textViewMoreRow = itemView.findViewById<TextView>(R.id.textViewMoreRow)!!
val imageViewBookRow = itemView.findViewById<ImageView>(R.id.imageViewBookRow)!!
}
}
15 juin 2020 - kotlin répond em> strong> Si vous voulez appeler "supportfragmentManager" em> dans fragment fort>: p>
blockQuote> @Canerkaseler p> p>
Contexte Code> est NULL, assurez-vous simplement de définir une valeur avant de la jeter surMainActivity code>Il s'agit d'une exception code> tycâte de code> et il dit que
ne peut pas être lancé sur le type non nul code> quelque chose qui ne permet pas NULL que vous passez null. À Kotlin, vous devez ajouter? Code> pour faire en nullable