뭔가 자바를 배울때 기초부터 배우는 느낌을
느껴보는거라 재밌다.
오늘은 코틀린으로 화면전환(Intent)를 배워보겠다.
인텐트
이제부터 코틀린에서 사용하는 뷰바인딩에 대한 설명은 하지 않겠다.
매번 뷰바인딩을 하고 있으니, 모르시는 분들은 코틀린 카테고리를 확인해보면
알 수 있다.
우선 메인액티비티와 서브액티비티를 만들겠다.
누가 봐도 왼쪽이 메인이고, 오른쪽이 서브이다.
메인에서 서브로 인텐트를 해보겟다.
자바랑 별차이는 없다.
다음은 메인액티비티의 코틀린 코드이다.
class MainActivity : AppCompatActivity() {
private var mbinding : ActivityMainBinding? = null
private val binding get() = mbinding!!
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mbinding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.button2.setOnClickListener{
val intent = Intent(this, SubActivity::class.java)
startActivity(intent)
}
}
}
버튼을 눌렀을 때,
서브액티비티로 이동이 가능하다.
자바였다면,
Intent intent = new Intent(this, SubActivity.class);
startActivity(intent);
이런식으로 작성을 했을 것이다.
지금보니 크게 다른 점은 없다.
여기서 더블콜론(::) 에 대해 잠깐 설명하겠다.
우선 리플렉션(Reflection) 이라는것에 대해 먼저 알 필요가 있다.
https://medium.com/harrythegreat/%EC%BD%94%ED%8B%80%EB%A6%B0%EC%9D%98-%EB%8D%94%EB%B8%94%EC%BD%9C%EB%A1%A0-%EC%B0%B8%EC%A1%B0-73ff25484586
리플렉션에 대한 내용은 이 곳을 참고하였다.
리플렉션이란 코드를 작성하는 시점에는 런타임상 컴파일된
바이트코드에서 내가 작성한 코드가 어디에 위치한지 알 수 없기 때문에
바이트코드를 이용해 내가 참조하려는 값을 찾기 위해 사용하는 것을 말한다.
위와 같이 다른 액티비티로 넘어갈때, 내가 참조하려는 값을 알려주기 위해 더블콜론을
사용하는걸로 볼 수 있다.
그리고 끝에 .java를 붙이는 것은
자바에서 쓰는 클래스와 코틀린에서 사용하는 클래스가 다르기 때문이다.
자바에서는 Class를 리턴하고, 코틀린에서는 KClass를 리턴합니다.
이 때, ".Java"를 이용하여 자바클래스 값을 받습니다.
그러하여 서브액티비티에 값을 참조하여
startActivity를 이용해 인텐트를 하여 화면을 전환할 수 있다는 것을 알 수 있습니다.