我有这个fragmentStateAdapter,它保存了我的一些卡片以便在它们之间滑动:
public class ScreenSlidePagerAdapter(activity: AppCompatActivity, var items: ArrayList<Helpers.Card>, private val saveToDb: Boolean) : FragmentStateAdapter(activity) {
override fun getItemCount(): Int = items.count()
var fragment:CardItemFragment?=null
override fun createFragment(position: Int): Fragment{
fragment =CardItemFragment(position, saveToDb ,this) //.newInstance( items[position ].getSaveString())
return fragment as CardItemFragment
}}
CardItemFragment是:
class CardItemFragment(val position:Int, val saveToDb: Boolean, val isCardMine: Boolean,val adapter: ScreenSlidePagerAdapter) : Fragment() {
lateinit var cardView1: ConstraintLayout
lateinit var crdNameTB1: TextView
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val v = inflater.inflate(R.layout.card_item, container, false)
cardView1 = v.findViewById(R.id.cardView1)
crdNameTB1= v.findViewById(R.id.crdNameTB1)
return v
}
然后我可以像这样更新fragmentStateAdapter中的卡片:
fun updateCard(): Bitmap? {
crdNameTB1.text = .....
}
这很好,我可以在我的卡片之间滑动,但是当我通过底部表更改卡片的“名称”属性的值时,当我关闭BottomSheet时,我使用此代码刷新fragmentSatateAdapter:
MainActivity.galleryPagerAdapter?.fragment ?.updateCard()
我将MyActivity设置为伴随对象,以便在任何地方访问它。
执行此代码时,我得到的片段不是 null 对象,但updateCard给了我 null 对象 1 问题是什么,我该如何克服这个问题并更新显示的Card?