Android 的 MVP,我们应该如何提供带有参数的片段?
MVP for Android, how should we provide a fragment with arugments?
我正在为 Android
学习 Model View Presenter
我看过很多教程和示例,但似乎 none 演示了我们应该如何提供片段参数。
让我通过一个例子来说明我的意思
BurgerListFragment
此片段显示了汉堡的 RecyclerView。底层适配器包含代表汉堡的对象数组。
BurgerDetailFragment
当我们点击 BurgerListFragment
中的汉堡时,此事件将传递给我们的展示者,然后展示者将返回视图 BurgerDetailFragment
应该显示。
但是,我们必须传递 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
,因为它从模型获取数据以提供给另一个视图,而视图不应该与模型通信!
如果您有任何问题,请告诉我
注意 1 在我的示例中,我知道两个片段直接相互通信是不好的,但这仅适用于此示例,实际上是我的另一个问题改天!
我管理这类事情的方式是在我的模型中有一个值代表当前选择的数据。
希望下图能让您对我的意思有所了解:
实际上,您可能会将 Burger 数据保存在本地数据库中。 BurgerListPresenter
向模型询问它将加载数据库的所有汉堡的列表。
当用户选择汉堡时,演示者将此数据放回模型中。例如,这可以作为所选汉堡的 ID 存储在 SharedPrefs 中。
BurgerDetailsPresenter
向模型询问当前选择的汉堡。该模型将检查 SharedPrefs 以获取当前汉堡的 ID,然后从数据库中加载它。
这样两个Fragments就完全不知道彼此了,两个Presenter也是。
我正在为 Android
学习 Model View Presenter我看过很多教程和示例,但似乎 none 演示了我们应该如何提供片段参数。
让我通过一个例子来说明我的意思
BurgerListFragment
此片段显示了汉堡的 RecyclerView。底层适配器包含代表汉堡的对象数组。
BurgerDetailFragment
当我们点击 BurgerListFragment
中的汉堡时,此事件将传递给我们的展示者,然后展示者将返回视图 BurgerDetailFragment
应该显示。
但是,我们必须传递 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
,因为它从模型获取数据以提供给另一个视图,而视图不应该与模型通信!
如果您有任何问题,请告诉我
注意 1 在我的示例中,我知道两个片段直接相互通信是不好的,但这仅适用于此示例,实际上是我的另一个问题改天!
我管理这类事情的方式是在我的模型中有一个值代表当前选择的数据。
希望下图能让您对我的意思有所了解:
实际上,您可能会将 Burger 数据保存在本地数据库中。 BurgerListPresenter
向模型询问它将加载数据库的所有汉堡的列表。
当用户选择汉堡时,演示者将此数据放回模型中。例如,这可以作为所选汉堡的 ID 存储在 SharedPrefs 中。
BurgerDetailsPresenter
向模型询问当前选择的汉堡。该模型将检查 SharedPrefs 以获取当前汉堡的 ID,然后从数据库中加载它。
这样两个Fragments就完全不知道彼此了,两个Presenter也是。