コールはKotlinにプライベートクラス内onBackPressed

深刻:

私は、Androidデベロッパーのガイドに従って、ジェスチャー検出器クラスを作成しようとしているウェブサイトを、私はメソッドInvoke私が作成した新しいプライベートクラス内()をonBackPressedすることはできませんので、私はこだわっています。どのように私はそれを管理することができますか?これは私のコードです:

    class DetailActivity : AppCompatActivity() {

    private lateinit var mDetector: GestureDetectorCompat

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.detail_activity)

        mDetector = GestureDetectorCompat(this, MyGestureListener())
    }

    override fun onTouchEvent(event: MotionEvent): Boolean {
        mDetector.onTouchEvent(event)
        return super.onTouchEvent(event)
    }

    private class MyGestureListener : GestureDetector.SimpleOnGestureListener() {

        private val SWIPE_DISTANCE_THRESHOLD = 100
        private val SWIPE_VELOCITY_THRESHOLD = 100

        override fun onDown(event: MotionEvent): Boolean {
            //CALL onBackPressed
            return true
        }

        override fun onFling(
                event1: MotionEvent,
                event2: MotionEvent,
                velocityX: Float,
                velocityY: Float
        ): Boolean {
            //TODO
            var distanceX = event2.getX() - event1.getX()
            var distanceY = event2.getY() - event1.getY()
            if (Math.abs(distanceX) > Math.abs(distanceY) && Math.abs(distanceX) > SWIPE_DISTANCE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
                if (distanceX > 0)
                //CALL onBackPressed
            }
            return true
        }
    }
}

新しいコード:

    class DetailActivity : AppCompatActivity() {

    private lateinit var mDetector: GestureDetectorCompat

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.detail_activity)

        mDetector = GestureDetectorCompat(this, MyGestureListener())
    }

    override fun onTouchEvent(event: MotionEvent): Boolean {
        mDetector.onTouchEvent(event)
        return super.onTouchEvent(event)
    }

    override fun onBackPressed() {
        super.onBackPressed()
    }

    inner class MyGestureListener : GestureDetector.SimpleOnGestureListener() {

        private val SWIPE_DISTANCE_THRESHOLD = 100
        private val SWIPE_VELOCITY_THRESHOLD = 100

        override fun onDown(event: MotionEvent): Boolean {
            System.out.println("LOGG")
            [email protected]()
            return true
        }

        override fun onFling(
                event1: MotionEvent,
                event2: MotionEvent,
                velocityX: Float,
                velocityY: Float
        ): Boolean {
            var distanceX = event2.getX() - event1.getX()
            var distanceY = event2.getY() - event1.getY()
            if (Math.abs(distanceX) > Math.abs(distanceY) && Math.abs(distanceX) > SWIPE_DISTANCE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
                if (distanceX > 0) {
                    System.out.println("LOGG")
                    [email protected]()
                }
            }
            return true
        }
    }
}

編集:私は、新しいメソッドが追加さonBackPressedと私は内部クラスを通してそれを呼び出したが、何も変わっていません。私も自分のLogcatでプリントを見ていません。

RobCo:

それてくださいprivate inner class
Kotlinでは、ネストされたクラスは、デフォルトでは静的です。それを囲むクラスのプロパティにアクセスすることができ、内部クラスを作成するには、「内部の」キーワードを使用する必要があります。

参照してくださいJavaの内部クラスと静的な入れ子になったクラスを

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=342959&siteId=1