Search code examples
androidkotlinlambdalistenersuper

how to call super method in listener on kotlin


    override fun close(){
        var that = this
        view!!.animate().alpha(0f).setListener(object : Animator.AnimatorListener {
            override fun onAnimationStart(animation: Animator?) {}
            override fun onAnimationCancel(animation: Animator?) {}
            override fun onAnimationRepeat(animation: Animator?) {}
            override fun onAnimationEnd(animation: Animator?) {
                that.super.close()
            }
        }).setDuration(500).start()
    }

how can i call super.close() in listener?

that.super.close()

i can't call that.super.close()

can i solve it?

and i try to like this

    override fun close(){
        var that = this
        view!!.animate().alpha(0f).setListener(object : Animator.AnimatorListener {
            override fun onAnimationStart(animation: Animator?) {}
            override fun onAnimationCancel(animation: Animator?) {}
            override fun onAnimationRepeat(animation: Animator?) {}
            override fun onAnimationEnd(animation: Animator?) {
                that.closeSuper()
            }
        }).setDuration(500).start()
    }

    fun closeSuper(){
        super.close()
    }

it's work. but i want call super.close() at in the listener or in the close() method please help me!


Solution

  • Try this: super@ClassName.close()

    It works for me when I'm trying to call super.show() in a listener in SampleDialog class, for my case it will be super@SampleDialog.show().

    Here's some references.