【问题标题】:returning from lamda expression从 lambda 表达式返回
【发布时间】:2018-01-19 06:37:49
【问题描述】:

在下面显示的代码中,我如何从这个 observable(lambda 表达式)返回布尔值

loginActivityViewModel.checkEmailAndPassword(email,password).observe(this,(response)->{
        switch(response){

            case LoginActivityViewModel.EMPTY_EMAIL:
                handleError(emailWrapper, R.string.error_email_required);
                return false;

            case LoginActivityViewModel.INVALID_EMAIL:
                handleError(emailWrapper, R.string.error_enter_valid_email);
                return false;
            case LoginActivityViewModel.EMPTY_PASSWORD:
                handleError(passwordWrapper, R.string.error_password_required);
                return false;
        }
    });

这个语句块在一个返回布尔值的函数中,但 IDE 告诉我在 case 中出现了意外的返回语句。 感谢您提前提供帮助

【问题讨论】:

    标签: android lambda java-8 viewmodel


    【解决方案1】:

    您试图从可观察函数中返回,而不是从包含您的代码块的函数中返回。这不起作用。假设对 checkEmailAndPassword 的调用是您方法的重点,更好的选择是将 callback 函数传递给您的方法,而不是返回布尔值。

    【讨论】:

      【解决方案2】:

      你缺少默认值:

      loginActivityViewModel.checkEmailAndPassword(email,password).observe(this,(response)->{
          switch(response){
      
              case LoginActivityViewModel.EMPTY_EMAIL:
                  handleError(emailWrapper, R.string.error_email_required);
                  return false;
      
              case LoginActivityViewModel.INVALID_EMAIL:
                  handleError(emailWrapper, R.string.error_enter_valid_email);
                  return false;
              case LoginActivityViewModel.EMPTY_PASSWORD:
                  handleError(passwordWrapper, R.string.error_password_required);
                  return false;
      
              default:
                  return false;
      
          }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-06
        • 2011-06-11
        • 1970-01-01
        • 2019-09-19
        • 1970-01-01
        • 1970-01-01
        • 2016-05-30
        相关资源
        最近更新 更多