作为一个小例子:拿一个你登陆登录页面的网站,成功登录后直接进入主页面,在左边你有一个菜单,在右边一个内容就是一切单击菜单中的链接时会加载。在菜单中,我有多个商店,每个商店都有自己的设置。这些设置将使用id
进行初始化,以确定视图应显示的内容。
对于历史映射器,我想有人会有这样的事情:
/#LoginPlace:login
/#MainPlace:home
/#MainPlace:storeSettings?id=<id>
/#MainPlace:userSettings
etc..
在[2]中说
“为了通过网址访问,活动需要相应的地方。”
听起来我觉得我应该有一个LoginActivity
和一个MainActiviy
,因为我来到我的网站后LoginActivity
是我到达的第一个Place
{ {1}}是我成功登录后的地方。
我有这样的事情:
MainActivity
当然有各自的观看public class LoginActivity extends AbstractActivity implements LoginView.Presenter {
// ..
private void onLoginSuccess() {
this.clientFactory.getPlaceController().goTo(new MainPlace());
}
}
public class MainActivity extends AbstractActivity implements MainView.Presenter {
// ..
}
和LoginView
。
这就是MainView
的样子:
AppActivityMapper.getActivity()
到目前为止一直很好,但我如何实施@Override
public Activity getActivity(Place place) {
if (place instanceof LoginPlace) {
return new LoginActivity((LoginPlace) place, clientFactory);
} else if (place instanceof MainPlace) {
return new MainActivity((MainPlace) place, clientFactory);
}
return null;
}
和MenuView
?
我希望能够点击MainContentView
中的菜单项并更新MenuView
并相应地生成地点标记,如:
MainContentView
但我不知道如何做到这一点以及如何使用给定的/#MainPlace:home
/#MainPlace:storeSettings?id=<id>
/#MainPlace:userSettings
初始化我的活动StoreSettingsActivity
。我相信我需要另一个id
,现在应该通过点击菜单链接来控制发起的地点更改,但我无法弄清楚它是如何工作的。
我希望我的问题很清楚,如果您需要更多信息,请告诉我。
答案 0 :(得分:0)
我认为我曾做过类似的事情,但这并不完美,因为我必须处理现有的架构,但它有效。
这是我做的:
点击菜单中的链接后,执行placeController.goTo(new MainPlace(id))
;
在ActivityMapper
中,返回您设置MainActivity
ID的MainPlace
。
MainActivity
中,在start
方法中调用一种方法,该方法将根据您在{{1}中先前设置的MainContentView
的ID启动MainPlace
}。我非常确定有更好的方法可以做到这一点,但它有效,它可以帮助您找到更好的解决方案。