类不是抽象的/无法实例化活动

时间:2019-09-02 16:22:00

标签: android kotlin

我是Kotlin的新手,我正在尝试创建一个功能,该功能可对滑动操作做出反应。但是我有麻烦。

当我删除abstract关键字时,它将引发错误: Class 'dock' is not abstract and does not implement abstract member 当我保留abstract关键字时,该应用程序不想从错误开始: java.lang.Class<kiwi.you.app.dock> cannot be instantiated

dock.kt

import android.os.Bundle
import android.content.Intent
import android.view.GestureDetector
import android.view.MotionEvent
import androidx.appcompat.app.AppCompatActivity
import android.widget.Toast

/* CODE */
abstract class dock : AppCompatActivity(), GestureDetector.OnGestureListener
{
    override fun onCreate(savedInstanceState: Bundle?)
    {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.dock)
        hide_bars()

    }
    /* slot swipe */
    private fun slotSwipe0A()
    {
        val intent = Intent(this, zeroA::class.java)
        startActivity(intent)
        overridePendingTransition(R.anim.slide_left_in, R.anim.slide_right_out)
    }
    private fun slotSwipe0B()
    {
        val intent = Intent(this, zeroB::class.java)
        startActivity(intent)
        overridePendingTransition(R.anim.slide_right_in, R.anim.slide_left_out)
    }
    private fun slotSwipe1()
    {
        val intent = Intent(this, one::class.java)
        startActivity(intent)
        overridePendingTransition(R.anim.slide_up_in, R.anim.slide_down_out)
    }
    private fun slotSwipeMinus1()
    {
        val intent = Intent(this, minus1::class.java)
        startActivity(intent)
        overridePendingTransition(R.anim.slide_down_in, R.anim.slide_up_out)
    }

    private val swipeThreshold = 100
    private val swipeVelocityThreshold = 100

    override fun onFling(downEvent: MotionEvent, moveEvent: MotionEvent, velocityX: Float, velocityY: Float): Boolean
    {
        var result = false
        val diffY = moveEvent.y - downEvent.y
        val diffX = moveEvent.x - downEvent.x
        if (Math.abs(diffX) > Math.abs(diffY))
        {
            // right or left swipe
            if (Math.abs(diffX) > swipeThreshold && Math.abs(velocityX) > swipeVelocityThreshold)
            {
                if (diffX > 0)
                {
                    swipeRight()
                } else
                {
                    swipeLeft()
                }
                result = true
            }
        } else
        {
            // up or down swipe
            if (Math.abs(diffY) > swipeThreshold && Math.abs(velocityY) > swipeVelocityThreshold)
            {
                if (diffY > 0)
                {
                    swipeDown()
                } else
                {
                    swipeUp()
                }
                result = true
            }
        }
        return result
    }

    private fun swipeUp()
    {
        Toast.makeText(this, "Swipe Top", Toast.LENGTH_LONG).show()
        slotSwipe1()
    }

    private fun swipeDown()
    {
        Toast.makeText(this, "Swipe Bottom", Toast.LENGTH_LONG).show()
        slotSwipeMinus1()
    }

    private fun swipeLeft()
    {
        Toast.makeText(this, "Swipe Left", Toast.LENGTH_LONG).show()
        slotSwipe0A()
    }

    private fun swipeRight()
    {
        Toast.makeText(this, "Swipe Right", Toast.LENGTH_LONG).show()
        slotSwipe0B()
    }
}

我知道不能实例化抽象类,但是如何在没有错误的情况下运行它呢?这就是为什么我在这里。请帮助

1 个答案:

答案 0 :(得分:2)

您必须实现GestureDetector.OnGestureListener方法:

class dock : AppCompatActivity(), GestureDetector.OnGestureListener {
    override fun onShowPress(e: MotionEvent?) {
        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
    }

    override fun onSingleTapUp(e: MotionEvent?): Boolean {
        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
    }

    override fun onDown(e: MotionEvent?): Boolean {
        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
    }

    override fun onFling(e1: MotionEvent?, e2: MotionEvent?, velocityX: Float, velocityY: Float): Boolean {
        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
    }

    override fun onScroll(e1: MotionEvent?, e2: MotionEvent?, distanceX: Float, distanceY: Float): Boolean {
        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
    }

    override fun onLongPress(e: MotionEvent?) {
        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
    }
(...)

提示:将光标指向“班级停靠站”上方,然后按Alt + Enter键,它将显示一个选项Implement Members