5 votes

Comment résoudre l'erreur d'attente du corps de la classe dans Kotlin ?

Le code :

var shouldStopLoop = false

val handler = object : Handler()
val runnable = object: Runnable            //error occurs here
{
    override fun run() {
        getSubsData()
        if(!shouldStopLoop)
        {
            handler.postDelayed(this, 5000)
        }
    }
}

handler.post(runnable)

Expecting a class body L'erreur se produit lorsque j'essaie de créer le val runnable .

8voto

Rahul Tiwari Points 71

L'erreur se produit parce que vous traitez Handler en tant que classe abstraite dans la déclaration suivante :

val handler = object : Handler()

cette déclaration doit être suivie d'un corps de classe comme l'indique l'erreur, comme ceci :

val handler = object : Handler(){}

Toutefois, en tant que Handler n'est pas une classe abstraite, une déclaration plus appropriée sera utilisée :

val handler = Handler()

2voto

Serg_ Points 12

Vous pouvez essayer l'approche suivante :

// function takes lambda extension function on class Runnable as the parameter, it is known as lambda with receiver
inline fun runnable(crossinline body: Runnable.() -> Unit) = object : Runnable {
    override fun run() = body()
}

fun usingRunnable() {
    val handler = Handler()
    val runnableCode = runnable {
        getSubsData()
        if(!shouldStopLoop)
        {
            handler.postDelayed(this, 5000)
        }
    }
    handler.post(runnableCode)
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X