Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

280
Views
Type mismatch in lambda function - Kotlin

I want the text to be taken from string resource, depends on item.route, which is specified before bellow code.

But whole "when" expression gives me the error: "Type mismatch: inferred type is () -> Int but Int was expected." I don't have idea how to resolve it.


Text(
        text = stringResource(id = {
            when (item.route) {
                "menu_screen" -> R.string.menu
                "orders_screen" -> R.string.orders
                else -> R.string.orders
            }
        }),
        textAlign = TextAlign.Center
    )
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Just remove the extra curly brace ;)

Text(
    text = stringResource(id = 
        when (item.route) {
            "menu_screen" -> R.string.menu
            "orders_screen" -> R.string.orders
            else -> R.string.orders
        }
    ),
    textAlign = TextAlign.Center
)
over 4 years ago · Santiago Trujillo Report

0

When you put bare brackets { } around something, it is interpreted as a lambda function. By "bare" I mean not after a class/fun/when/if/else, etc. You need to remove the extra brackets you put in there.

Text(
    text = stringResource(id = 
        when (item.route) {
            "menu_screen" -> R.string.menu
            "orders_screen" -> R.string.orders
            else -> R.string.orders
        }
    ),
    textAlign = TextAlign.Center
)

Some other languages (such as Java) let you surround code with brackets to limit the scope of variables declared inside or to compute something that takes multiple expressions. To do this in Kotlin, you have to use a scope inline function such as run { }.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!