gpt4 book ai didi

android - Android 的 MVP,我们应该如何提供带有参数的 fragment ?

转载 作者:行者123 更新时间:2023-11-29 01:16:19 27 4
gpt4 key购买 nike

我正在研究 Android 的 Model View Presenter

我看过很多教程和示例,但似乎没有一个能说明我们应该如何提供 fragment 参数。

让我通过一个例子来说明我的意思

BurgerListFragment

此 fragment 显示了汉堡的 RecyclerView。底层适配器包含代表汉堡的对象数组。

BurgerDetailFragment

当我们点击 BurgerListFragment 中的汉堡时,此事件将传递给我们的 Presenter,然后由 Presenter 传回应该显示 BurgerDetailFragment 的 View 。

但是,我们必须将被点击的汉堡包对象传递给BurgerDetailFragment

一般情况下是这样的

public static BurgerDetailFragment newInstance(Burger burger){
BurgerDetailFragment burgerDetailFragment = new BurgerDetailFragment();
Bundle args = new Bundle();
args.putParcelable(BURGER_KEY,burger);
burgerDetailFragment.setArguments(args);
return burgerDetailFragment;
}

但是,我的困惑来自演示者告诉 BurgerListFragment 显示 BurgerDetailFragment,因为它从模型获取数据以提供给另一个 View ,并且 View 不应该与模型!

如果你有任何问题,请告诉我

注意 1 在我的例子中,我知道两个 fragment 直接相互通信是不好的,但这只是针对这个示例,实际上是我改天再问的另一个问题!

最佳答案

我管理这类事情的方式是在我的模型中有一个代表当前所选数据的值。

希望下图能让您对我的意思有一个很好的了解:

MVP Burger Diagram

在实践中,您可能会将 Burger 数据保存在本地数据库中。 BurgerListPresenter 向模型询问它将加载数据库的所有汉堡的列表。

当用户选择汉堡时,演示者将此数据放回模型中。例如,这可以作为所选汉堡的 ID 存储在 SharedPrefs 中。

BurgerDetailsPresenter 向模型询问当前选择的汉堡。该模型将检查 SharedPrefs 以获取当前汉堡的 ID,然后从数据库中加载它。

这样两个 Fragment 就完全不知道彼此,两个 Presenter 也是如此。

关于android - Android 的 MVP,我们应该如何提供带有参数的 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39379319/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com