我已经设法在片段之间切换,但在当前片段上的更改在进入新片段时不适用。我有2个片段,HomeFragment
和Subreddit
。当我第一次运行应用程序时,它显示HomeFragment
,显示r/aww
内容。如果我单击操作栏,它将更改为Subreddit片段。在Subreddit
片段中,我可以点击Reddit子分类(如r/sports
、r/news
等),点击某个subreddit分类后,片段又变成了HomeFragment
,应该显示我刚才选择的subreddit分类的内容,但没有,我选择了r/news
,而在Subreddit
片段中,但是当我运行我的应用程序时,它仍然显示第一个reddit子类别,即r/aww
。
这是我的SubredditListAdapter.kt
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH {
val binding = RowSubredditBinding.inflate(LayoutInflater.from(parent.context),
parent, false)
val holder = VH(binding)
return holder
}
下面是我的HomeFragment.kt
:
class HomeFragment: Fragment() {
private val viewModel: MainViewModel by viewModels()
private var _binding: FragmentRvBinding? = null
private val binding get() = _binding!!
companion object {
fun newInstance(): HomeFragment {
return HomeFragment()
}
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
_binding = FragmentRvBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
Log.d(javaClass.simpleName, "onViewCreated")
initAdapter(binding)
}
}
我原以为使用updateNewCategory
和observeNewCategory
会改变subreddit分类,但事实证明并没有。如何更新分类并应用更改?
1条答案
按热度按时间nkoocmlb1#
我对您的代码片段的理解是,您尝试使用公共MainViewModel在片段和Activity之间进行通信。
您的问题是使用
private val viewModel: MainViewModel by viewModels()
而不是activityViewModel
在片段中创建MainViewModel的新示例使用以下行获取片段中Activity的viewModel引用