【问题标题】:How to use lambda expression in android如何在android中使用lambda表达式
【发布时间】:2018-07-05 10:07:11
【问题描述】:

我在尝试使用 lambda 表达式时遇到此错误。

错误:

错误:(122, 42) 错误:-source 1.7 不支持 lambda 表达式 (使用 -source 8 或更高版本来启用 lambda 表达式)

我该如何解决它注意我的android studio是3.0

【问题讨论】:

标签: android lambda android-gradle-plugin


【解决方案1】:

将以下代码添加到您的应用级 gradle:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

【讨论】:

    【解决方案2】:

    这是因为您可能正在使用 Java 7,而实际上,Retrolambda 是一个我们可以与 Java 8 lambda expressions 一起使用的库。

    那么如何设置:-

    将以下内容添加到您的 project’s main build.gradle

     classpath 'me.tatarka:gradle-retrolambda:3.2.3'
    

    然后将其添加到 your application module’s build.gradle

    apply plugin: 'me.tatarka.retrolambda'
    

    那么我们需要将这些行添加到your application module’s build.gradle

    android {
      compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
      }
    }
    

    完成了,你可以像下面这样使用它:-

    例如。)单击带有 Retrolambda 的按钮。

      // RETROLAMBDA WAY
            clickMeBtn.setOnClickListener(view ->
                    Toast.makeText(MainActivity.this,
                 "This is the way to click a button to make a toast with RetroLambda !", Toast.LENGTH_LONG).show());
    

    匿名类new View.OnClickListener()可以替换为lambda

    【讨论】:

    • @ali-habbash 检查此答案,希望对您有所帮助。
    • 非常感谢,它对尚不支持嵌入式 java 8 的 android studio 版本非常有帮助,并且必须接受答案
    • 嗨@AliHabbash,如果它可以帮助你随时接受它,伙计。
    【解决方案3】:
    android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    
    defaultConfig {
        applicationId "com.sanjay.sanjay"
        minSdkVersion 15
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
    
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    
    }
    

    在 android studio 的 app.gradle 文件中添加这样的内容

    【讨论】:

      【解决方案4】:

      将以下代码块添加到您的应用级 gradle 文件中

      android {}属性

      compileOptions {
              sourceCompatibility = '1.8'
              targetCompatibility = '1.8'
          }
      

      喜欢

       android {
      ...
      compileOptions {
                  sourceCompatibility = '1.8'
                  targetCompatibility = '1.8'
              }
      }
      

      【讨论】:

        【解决方案5】:

        使用以下代码并单击同步按钮,然后您的错误将得到修复

        android {
          defaultConfig {
            // Required when setting minSdkVersion to 20 or lower
            multiDexEnabled true
          }
        
          compileOptions {
            // Flag to enable support for the new language APIs
            coreLibraryDesugaringEnabled true
            // Sets Java compatibility to Java 8
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
          }
        }
        
        dependencies {
          coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.9'
        }

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多