为什么使用导航切换BottomNavigationView的图片会消失?

问题描述 投票:0回答:1

如下面的Gif.为什么切换BottomNavigationView后,BottomNavigationView的Profile的Works标签中的图片会消失。但是当我进入BottomNavigationView的Home分类项后,这些图片就会出现?

主活动.kt

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    navController = nav_host_fragment.findNavController()
    bottom_nav_view.setupWithNavController(navController)
}

WorksFragment.kt

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        uid = FirebaseAuth.getInstance().currentUser?.uid

        val worksFragmentViewModel= ViewModelProvider(this).get(WorksFragmentViewModel::class.java)

        worksFragmentViewModel.getSelfThumbnailPhoto().observe(viewLifecycleOwner, Observer {


            works_fragment_recycyler_view.apply {
                setHasFixedSize(true)
                layoutManager = GridLayoutManager(context, 3)

                adapter = ThumbnailWorksAdapter(it).apply {
                    notifyDataSetChanged()
                }
            }
        })
    }

WorksFragmentViewModel.kt。

class WorksFragmentViewModel : ViewModel() {
    private var worksFragmentReposity = WorksFragmentReposity()

    fun getSelfThumbnailPhoto() = worksFragmentReposity.getSelfThumbnailPhoto()

}

WorksFragmentReposity.kt。

class WorksFragmentReposity {
    private var selfThumbnailLiveData = SelfThumbnailLiveData()

    fun getSelfThumbnailPhoto():LiveData<List<UploadedImages>> = selfThumbnailLiveData

}

SelfThumbnailLiveData.kt

class SelfThumbnailLiveData : LiveData<List<UploadedImages>>(), EventListener<QuerySnapshot> {


    private val TAG= SelfThumbnailLiveData::class.java.simpleName

    private lateinit var listenerRegistration: ListenerRegistration
    private var isRegistered :Boolean = false

    private val uid = FirebaseAuth.getInstance().currentUser?.uid


    private val query = Firebase.firestore.collection("uploadedImages")
        .whereEqualTo("uid", uid)
        .orderBy("timestamp", Query.Direction.DESCENDING)


    override fun onActive() {
        super.onActive()

        listenerRegistration = query.addSnapshotListener(this)
        isRegistered = true
    }

    override fun onInactive() {
        super.onInactive()
        if (isRegistered) {
            listenerRegistration.remove()
        }
    }

    override fun onEvent(querySnapshot: QuerySnapshot?, firebaseFirestoreException: FirebaseFirestoreException?) {
        Log.d(TAG, ": ${firebaseFirestoreException?.message}");
        querySnapshot?.let {
            val uploadedImagesList = mutableListOf<UploadedImages>()
            it.documents.forEach { documentSnapshot ->
                val uploadedImages = documentSnapshot.toObject(UploadedImages::class.java)
                    ?: UploadedImages()
                uploadedImagesList.add(uploadedImages)
            }
            Log.d(TAG, "uploadedImagesList: $uploadedImagesList");
            value = uploadedImagesList
        }
    }
}

TabFragmentPagerAdapter.kt

class TabFragmentPagerAdapter(context: Context,fm: FragmentManager) : FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {

    private val TAB_TITLES = arrayOf("Works","User Info")
private val fragments:List<Fragment> = listOf(
    WorksFragment(),
    UserInfoFragment()
)
    override fun getItem(position: Int): Fragment {
        return fragments[position]
    }

    override fun getCount(): Int {
        return fragments.count()
    }

    override fun getPageTitle(position: Int): CharSequence? {
        return TAB_TITLES[position]
    }
}

ThumbnailWorksAdapter.kt

class ThumbnailWorksAdapter(private val uploadImagesList: List<UploadedImages>) : RecyclerView.Adapter<ThumbnailWorksAdapter.ThumbnailWorksHolder>() {

    inner class ThumbnailWorksHolder(itemView: View) : RecyclerView.ViewHolder(itemView)

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ThumbnailWorksHolder {
        val view = LayoutInflater.from(parent.context)
            .inflate(R.layout.thumbnail_works_holder_images, parent, false)
        return ThumbnailWorksHolder(view)
    }

    override fun getItemCount(): Int {
        return uploadImagesList.size
    }

    override fun onBindViewHolder(holder: ThumbnailWorksHolder, position: Int) {
        val uploadedImages = uploadImagesList[position]
        holder.itemView.apply {
            Picasso.get()
                .load(uploadedImages.downloadImagesUriList[0])
                .centerCrop(Gravity.CENTER_HORIZONTAL)
                .resize(100,100)
                .into(thumbnail_works_images)
        }
    }
}

ProfileFragment.kt

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
 //Bind tabLayout with viewPager
        val tabFragmentPagerAdapter = TabFragmentPagerAdapter(requireContext(), parentFragmentManager).apply {
            notifyDataSetChanged()
        }

        profileViewPager.adapter = tabFragmentPagerAdapter

        tabLayout.setupWithViewPager(profileViewPager)
}

enter image description here

android kotlin google-cloud-firestore navigation bottomnavigationview
1个回答
0
投票

有人帮我解决了这个问题。

ProfileFragment.kt

val tabFragmentPagerAdapter = TabFragmentPagerAdapter(requireContext(), childFragmentManager).apply {
            notifyDataSetChanged()
}
© www.soinside.com 2019 - 2024. All rights reserved.