2
วิธีใช้ Dagger 2 เพื่อ Inject ViewModel ของ Fragments ที่เหมือนกันภายใน ViewPager
ฉันกำลังพยายามเพิ่ม Dagger 2 ในโครงการของฉัน ฉันสามารถฉีด ViewModels (ส่วนประกอบ AndroidX Architecture) สำหรับชิ้นส่วนของฉัน ฉันมีViewPager ซึ่งมี 2 อินสแตนซ์ของแฟรกเมนต์เดียวกัน (เฉพาะการเปลี่ยนแปลงเล็กน้อยสำหรับแต่ละแท็บ) และในแต่ละแท็บฉันกำลังเฝ้าดูLiveDataเพื่อรับการอัปเดตเกี่ยวกับการเปลี่ยนแปลงข้อมูล (จาก API) ปัญหาคือเมื่อการตอบสนอง api มาและอัปเดตLiveDataข้อมูลเดียวกันในส่วนที่มองเห็นได้ในปัจจุบันจะถูกส่งไปยังผู้สังเกตการณ์ในแท็บทั้งหมด (ฉันคิดว่านี่อาจเป็นเพราะขอบเขตของViewModel) นี่คือวิธีที่ฉันสังเกตข้อมูลของฉัน: override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) activityViewModel.expenseList.observe(this, Observer { swipeToRefreshLayout.isRefreshing = false viewAdapter.setData(it) }) .... } ฉันใช้คลาสนี้ในการจัดหาViewModels: class ViewModelProviderFactory @Inject constructor(creators: MutableMap<Class<out ViewModel?>?, Provider<ViewModel?>?>?) : ViewModelProvider.Factory { …