代码之家  ›  专栏  ›  技术社区  ›  Cyrus the Great

android:创建bundle的新实例,并在MVP中以匕首的形式传递给意图。

  •  0
  • Cyrus the Great  · 技术社区  · 6 年前

    我想在我的项目中使用带匕首的MVP。 在视图中,我有这个方法,在这个方法中,我将向演示者传递一些对象:

    @Override
    public void onLogin(User user, Cookie cookie, UUID sessionId, List<Permission> permissions) {
        super.onLogin(user, cookie, sessionId, permissions);
        presenter.onLogin(user, cookie, sessionId, permissions);
    }
    

    这是我的演示者:

    public class Presenter implements ILogin.LoginPresenter{
    
        private Context context;
    
        @Inject
        public Presenter(Context context) {
            this.context = context;
        }
    
        @Override
        public void onLogin(User user, Cookie cookie, UUID sessionId, List<Permission> permissions) {
            Intent intent = new Intent(context,MainActivity.class);///?
            Bundle bundle = new Bundle();///?
            bundle.putString("USER", user.getUserName());
            intent.putExtras(bundle);
            context.startActivity(intent);
        }
    

    我在模块中没有任何内容:

    @Module
    public class LoginModule {
    }
    

    我的问题:

    1. 我真的在创造新的事物吗( Intent Bundle )当我使用匕首的时候在演讲者中?

    2. 我怎么能用匕首来描述我的场景呢?这意味着在模块类中创建意图和捆绑的新实例?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Benjamin Kevin Rameshwaran    6 年前

    MVP模式的要点是将业务逻辑从其视图中分离出来。在演示者中不使用任何与Android框架相关的代码是一个常见的好做法(此处演示者依赖于 Context , Intent Bundle 来自Android框架)。

    在您的情况下,不应创建 意图 在演示者中,因为它属于您的视图( MainActivity )

    你的 onLogin 函数可能如下所示:

    @Override
    public void onLogin(User user, Cookie cookie, UUID sessionId, List<Permission> permissions) {
        // whatever is your business logic
        view.showMainActivity(user);
    }
    

    在哪里? view 是由您的 主要活动 注射给你的演讲者。