activity内の内部クラスから actiity のインスタンスメソッドにアクセス

 

androidのkotlinで 

AppComponentActivity のサブクラス内にs

内部クラスを定義したときに、


外部クラスのメソッドにアクセスして実行するには、

どのように記述すればいいのでしょうか?


        ↓


Kotlinで`AppCompatActivity`

(または`ComponentActivity`)のサブクラス内に

内部クラスを定義し、

その内部クラスから外部クラスのメソッドにアクセスして実行するには、

内部クラスを`inner`クラスとして定義する必要があります。


`inner`クラスにすることで、

外部クラスのインスタンスへの参照を保持できるようになります。

その後、`this@OuterClassName`を使用して

外部クラスのメソッドやプロパティにアクセスします。


以下に具体例を示します。


### サンプルコード


```kotlin

import android.os.Bundle

import androidx.appcompat.app.AppCompatActivity


class MainActivity : AppCompatActivity() {


    override fun onCreate( 

savedInstanceState: Bundle?) {

        super.onCreate(

savedInstanceState)

        setContentView(

R.layout.activity_main)


        // 内部クラスのインスタンスを作成

        val innerInstance = InnerClass()

// 外部クラスのメソッドを呼び出し

        innerInstance.callOuterMethod() 

    }


    // 外部クラスのメソッド

    fun outerMethod() {

        println(

"外部クラスのメソッドが実行されました!")

    }


    // inner クラス

    inner class InnerClass {

        fun callOuterMethod() {

            // 外部クラスのメソッドにアクセス

            this@MainActivity.outerMethod()

        }

    }

}


```


### コードの説明


1. **`inner`修飾子**:


   - 内部クラスを`inner`として定義することで、

    外部クラスのインスタンスを参照できます。

   

2. **`this@OuterClassName`**:


   - 外部クラスを明示的に指定するために

   `this@MainActivity`を使います。

   

   この構文により、外部クラスのメソッドやプロパティにアクセスできます。



3. **インスタンスの作成とメソッド呼び出し**:


   - 内部クラスのインスタンスを作成し、

    そのメソッド内で外部クラスのメソッドを呼び出しています。


このようにすることで、

内部クラスから安全に外部クラスのメソッドや

プロパティを利用できます。


コメント