Hanbit the Developer

[Kotlin] Call a Method in MainActivity.kt from another class 본문

Mobile/Android

[Kotlin] Call a Method in MainActivity.kt from another class

hanbikan 2021. 2. 28. 21:49

MainActivity.kt

public interface InterfaceMainActivity{
    fun myFun()
}

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        val myClass = MyClass()
        myClass.interfaceMainActivity = object: InterfaceMainActivity{
        	override fun myFun(){
            	//TODO: Write Your Code!
            }
        }
    }
}

MyClass.kt

class MyClass{
	public lateinit var interfaceMainActivity:InterfaceMainActivity
    fun youCanUseItLikeThis(){
    	this.interfaceMainActivity.myFun()
    }
}

앱을 만들다보면 MainActivity의 메서드들이 필요할 때가 정말 많은데(예를 들면, runOnUiThread나 Toast), 이를 위한 해결방안이다.

 

MainActivity에 interface를 하나 만들고, 그 안에 임의의 함수를 만든다. 이것을 자기 입맛대로 함수를 override한 인터페이스 object를 myClass에 전달하면 된다.