코틀린 익스텐션이 2021년에 지원이 중단 됩니다. 기존에 제 코틀린 강의 중에서 findViewById 없이 변수를 사용하시려면 이 강의를 필독하셔야 합니다. ( 뷰바인딩 강의 ) duckssi.tistory.com/42 해당 내용은 추후 영상으로도 촬영하겠습니다. 감사합니다.
정말 죄송한데요...진짜 진짜 링크해주신 주소에서 하는 단어 하나하나가 무슨 말인지 하나도 모르겠어요. "뷰 바인딩"이 뭔지 "코틀린 익스텐션"이 뭔지 "뷰 바접근"이 뭔지 싱크 나우 하면 에러가 하나 뜨는데 토큰이 뭐가 어쩌고 하는데 아무것도 안됩니다..ㅠㅠ 이걸 알려면 어떤 영상을 봐야 하는건가요?
@@사자리안키체스 제가 이해한 바로는 홍드로이드 님이 동영상에서 쓰고 계시는 기능은 xml 파일의 id를 그대로 코틀린 파일(.kt)에 복붙해서 사용할 수 있는" Kotlin Synthetic"라는 일종의 코틀린 익스텐션(확장 프로그램)입니다. 근데 여기에 치명적인 오류가 생겨서 코틀린 회사 측에서 지원을 중단하죠. 더 이상 id를 편하게 복붙하는 기능을 사용하지 못한다는 겁니다. 그럼 코틀린 초창기에나 썼던 findViewById를 사용하거나, 뷰바인딩을 사용해야하는데 이중에 findViewId는 코틀린 파일에서 xml 파일의 값을 사용할 때마다, val 변수명 = findViewId(R.id.아이디명)을 써줘서 개발자가 직접 연결시켜야합니다. xml에서 가져다 쓰는 값이 한 두개면 몰라도 수십개가 되면 코드가 너무 더러워지죠. 그래서 홍드로이드님은 비교적 편한 뷰바인딩 사용을 권장하는 겁니다. 굳이 가져다쓰는 값마다 findViewById로 연결시킬 필요없이 뷰바인딩을 사용하면 코드 몇줄만 입력해도 xml파일이랑 코틀린 파일이랑 자동으로 연결이 되어 binding.아이디명 만 입력해도 xml파일의 값을 가져다 쓸 수 있게 된겁니다. 이해가 되셨는지 모르겠네용 이해가 안되셨다면 참고자료 : jeunna.tistory.com/119 를 보세용 어쨌든! 뷰바인딩 기능을 사용하려면 안드로이드 스튜디오 4.0 이상부터는 build.gradle.kts 파일에서 android { namespace = "com.example.intentkt" compileSdk = 34 defaultConfig { applicationId = "com.example.intentkt" minSdk = 24 targetSdk = 33 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" /* 이 부분 추가 buildFeatures { viewBinding = true // 안드로이드 4.0 이상 부터는 '='을 입력해야 동작합니다. } */ } 를 입력해야하고, 코틀린 파일(.kt) 에서는 class MainActivity : AppCompatActivity() { private lateinit var binding : ActivityMainBinding // 추가 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // setContentView(R.layout.activity_main) 삭제 binding = ActivityMainBinding.inflate(layoutInflater) //추가 setContentView(binding.root) // 추가 를 입력해야합니다. 주의할 점은 서브 액티비티의 경우 class SubActivity : AppCompatActivity() { private lateinit var binding: ActivitySubBinding // Main -> Sub로 변경 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivitySubBinding.inflate(layoutInflater) // Main -> Sub로 변경 setContentView(binding.root) Main을 모두 Sub로 바꿔주어야합니다. 참고자료 todaycode.tistory.com/29
14:33 Sub 액티비티 뷰바인딩이 안되는 분들은 Main -> Sub로 변경 해줘야합니다. class SubActivity : AppCompatActivity() { private lateinit var binding: ActivitySubBinding // Main -> Sub로 변경 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivitySubBinding.inflate(layoutInflater) // Main -> Sub로 변경 setContentView(binding.root) 그럼 정상적으로 뷰바인딩 됩니다. if(intent.hasExtra("msg")) { binding.tvGetMsg.text = intent.getStringExtra("msg") // 서브 액티비티에 존재하는 텍스트뷰에다가 HelloWorld가 넘어져 옴. } }
고정댓글처럼 바꾸는거 넘 번거로운것 같아요 ㅠ.ㅠ 차라리 xml 파일에서 버튼안에 android:onClick="btn_name" 추가하고 코틀린에서 fun btn_name(v: View) { val intent = Intent(this, SubActivity::class.java) startActivity(intent) } 의 형태로 쓰는게 나아 보이는데. 아직 초짜라 잘 모르겠네요. 뭐가 더 좋은 방법인가요??
@@hongdroid94 해당 게시글에는 메인엑티비티.java 만 기술되어있고 .kt는 없는데다 메인엑티비티에 게시글의 코드를 추가하여 빌드를 시키면 ActivityMainBinding나 hongdroid와 같은 글자가 있는 줄에서 계속 오류가 뜹니다. 뷰바인딩 어떻게 해야하는 건가요 ㅠㅠ...
완전 쌩 초짜입니다. 3강째 듣고 있는데, 전체적으로 말이 빨라서 0.75배속으로 듣네요.. 발음이 약간 뭉개져서 불편한점이 있습니다. 강의 속도를 조절하시면 좋을것같고.. 그리고 중간에 어.... 어... 이런부분이 많이 나오는데 시나리오를 한번에 써놓으시고 강의하는게 아니시고 그냥 머릿속으로 구상만 해서 강의하시는것같아요.. 만약 써놓고 하시는거라면 편집을 통해서 어.. 어.. 이런부분만 제거해도 영상길이가 짧아져서 몰입감이 생길것같습니다. 중간에 언어 선택도 같은단어(?)를 지칭하면서 꾸러미라고 했다가 객체라고 했다가.. 저같은 초보가 듣기에는 약간 강의가 부족한감이 있네요.
코틀린 익스텐션이 2021년에 지원이 중단 됩니다.
기존에 제 코틀린 강의 중에서 findViewById 없이 변수를 사용하시려면
이 강의를 필독하셔야 합니다. ( 뷰바인딩 강의 )
duckssi.tistory.com/42
해당 내용은 추후 영상으로도 촬영하겠습니다.
감사합니다.
강의 그대로 따라하고 있는데 findViewById 를 4시간 동안 보면서 봐도 이해가 전혀 안되는데 새로 영상 제작해주시면 안될까요
정말 죄송한데요...진짜 진짜 링크해주신 주소에서 하는 단어 하나하나가 무슨 말인지 하나도 모르겠어요. "뷰 바인딩"이 뭔지 "코틀린 익스텐션"이 뭔지 "뷰 바접근"이 뭔지 싱크 나우 하면 에러가 하나 뜨는데 토큰이 뭐가 어쩌고 하는데 아무것도 안됩니다..ㅠㅠ 이걸 알려면 어떤 영상을 봐야 하는건가요?
@@사자리안키체스 제가 이해한 바로는 홍드로이드 님이 동영상에서 쓰고 계시는 기능은 xml 파일의 id를 그대로 코틀린 파일(.kt)에 복붙해서 사용할 수 있는" Kotlin Synthetic"라는 일종의 코틀린 익스텐션(확장 프로그램)입니다.
근데 여기에 치명적인 오류가 생겨서 코틀린 회사 측에서 지원을 중단하죠.
더 이상 id를 편하게 복붙하는 기능을 사용하지 못한다는 겁니다.
그럼 코틀린 초창기에나 썼던 findViewById를 사용하거나, 뷰바인딩을 사용해야하는데
이중에 findViewId는 코틀린 파일에서 xml 파일의 값을 사용할 때마다,
val 변수명 = findViewId(R.id.아이디명)을 써줘서 개발자가 직접 연결시켜야합니다.
xml에서 가져다 쓰는 값이 한 두개면 몰라도 수십개가 되면 코드가 너무 더러워지죠.
그래서 홍드로이드님은 비교적 편한 뷰바인딩 사용을 권장하는 겁니다.
굳이 가져다쓰는 값마다 findViewById로 연결시킬 필요없이 뷰바인딩을 사용하면
코드 몇줄만 입력해도 xml파일이랑 코틀린 파일이랑 자동으로 연결이 되어 binding.아이디명 만 입력해도 xml파일의 값을 가져다 쓸 수 있게 된겁니다.
이해가 되셨는지 모르겠네용
이해가 안되셨다면
참고자료 : jeunna.tistory.com/119
를 보세용
어쨌든!
뷰바인딩 기능을 사용하려면
안드로이드 스튜디오 4.0 이상부터는
build.gradle.kts 파일에서
android {
namespace = "com.example.intentkt"
compileSdk = 34
defaultConfig {
applicationId = "com.example.intentkt"
minSdk = 24
targetSdk = 33
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
/* 이 부분 추가
buildFeatures {
viewBinding = true // 안드로이드 4.0 이상 부터는 '='을 입력해야 동작합니다.
}
*/
}
를 입력해야하고,
코틀린 파일(.kt) 에서는
class MainActivity : AppCompatActivity() {
private lateinit var binding : ActivityMainBinding // 추가
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// setContentView(R.layout.activity_main) 삭제
binding = ActivityMainBinding.inflate(layoutInflater) //추가
setContentView(binding.root) // 추가
를 입력해야합니다.
주의할 점은 서브 액티비티의 경우
class SubActivity : AppCompatActivity() {
private lateinit var binding: ActivitySubBinding // Main -> Sub로 변경
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySubBinding.inflate(layoutInflater) // Main -> Sub로 변경
setContentView(binding.root)
Main을 모두 Sub로 바꿔주어야합니다.
참고자료
todaycode.tistory.com/29
완전 초보인데도 이해잘가게 설명해주시네요 좋은강의 많이 부탁드려요~~
Jay Kang
정말 감사합니다!!☺️
🤗👍👍👍 명강의 감사합니다
좋은강의 올려주셔서 감사합니다
고맙습니닷
진짜로 사랑합니다 💕
kotlin기본문법이랑 앱만드는 강의 중간 강의가 없어서 엄청 헤맸는데 진짜 감사합니다!!!!!!!
도움이 되셨다면 기쁩니다 사랑해요 ㅎㅎ
14:33
Sub 액티비티 뷰바인딩이 안되는 분들은
Main -> Sub로 변경 해줘야합니다.
class SubActivity : AppCompatActivity() {
private lateinit var binding: ActivitySubBinding // Main -> Sub로 변경
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySubBinding.inflate(layoutInflater) // Main -> Sub로 변경
setContentView(binding.root)
그럼 정상적으로 뷰바인딩 됩니다.
if(intent.hasExtra("msg"))
{
binding.tvGetMsg.text = intent.getStringExtra("msg") // 서브 액티비티에 존재하는 텍스트뷰에다가 HelloWorld가 넘어져 옴.
}
}
설명대로 하시고 안되신다면 build.gradle > plugins { } 안에 id kotlin-android-extensions 추가 하시고 코틀린#2 버튼 이랑 같이 하시면 될거같아요
감사합니다~
정말 놀랍고 신기하네요^^ 감사합니다!!!
왕초보 인데도 이해하기 쉽네요 감사합니다~! 목소리가 잘들려서 좋네요 ㅎㅎ
감사합니다 🥺💕💕
잘보고 있습니다~
질문 있습니다. SubActivity라는 파일을 만들었을때 뷰바인딩을 사용하려면 MainActivity와 똑같은 작업을 SubActivity에서도 써줘야 하는건가요 ?
질문 있습니다. 현재 안드로이드 스튜디오 지라프 2022.3.1 패치 3 버전을 쓰고 있는데요 알트 + 엔터 눌렀을때 임포트 되지 않고 다른 여러가지 옵션이 나옵니다. 어떻게 해야하나요.
고정댓글처럼 바꾸는거 넘 번거로운것 같아요 ㅠ.ㅠ
차라리 xml 파일에서 버튼안에 android:onClick="btn_name" 추가하고
코틀린에서
fun btn_name(v: View) {
val intent = Intent(this, SubActivity::class.java)
startActivity(intent)
}
의 형태로 쓰는게 나아 보이는데. 아직 초짜라 잘 모르겠네요. 뭐가 더 좋은 방법인가요??
어떤 방법을 쓰셔도 상관은 없습니다!
단지 뷰바인딩으로 구현해두면 나중에 불필요한 코드작성이 대폭 줄기때문에 안내드렸습니다 :)
선생님 메인 엑티비티 텍스트 값과 새로운 엑티비티에 텍스트 값을 추가해서 2개를 한 번에 서브 엑비티브로 넘길 수도 있나요?
홍드님 혹시 네비게이션 바에서 클릭하면 화면 전환이 이루어지게 할려면 똑같이 인텐트 쓰면 되는건가요? 버튼말고 아이템으로 쓰고 싶습니다
영상에서의 val intent의 역활이 눌렀을때의 실행의 역활과 텍스트를 담는 변수의 역활두개를 가지고 있는건가요?
intent의 this가 그냥 말그대로 this의 역활인가요?
선생님 버튼2개를 만들고 각각 다른 액티비티로 이동시킬려고 했는데 두개중에서 마지막 버튼은 최초실행이 안되요. 처음 버튼을 실행한 후 두번째 버튼이 실행되네요 ..어떻게 해야 마지막 버튼도 최초실행을 시킬수있나요 .
쌤 빌드 해서 에뮬레이터로 확인하면 괜찮은데 다른 기종의 폰으로 구동시에 이미지뷰 위치들이 바뀌어서 혹시 구동하는 기종마다 자동으로 비율에 맞게는 못하나요?
질문있습니다! 홍드님과 모두 똑같게 따라한 후 @의 서브화면으로 이동 버튼을 눌렀는데
저는 화면이 안넘어 가는데 그 이유가 뭘까요...?
홍드님 질문있습니다!
textview에 텍스트를 입력할때
text를 사용하면
id명.text = 입력내용
이런식으로 해야하고
setText를 사용하면
id명.setText(입력내용)
이렇게 해야하나요?
호무새
두개다 setText의 역할로서 동일합니다!
그리고 질문하신대로 사용법은 그렇게하시면됩니다!
오오 그렇군요
빠른답장 감사합니다!
14:09 intent 변수를 public으로 지정안해줬는데 서로 다른 액티비티에서 그냥 intent 변수를 사용하는 거로 생각해서 이해가 안갑니다 ㅜ
안녕하세요 홍스튜디오님 보고 공부하고 있는 대학생입니다.
혹시 btn_a 부분에서 alt+enter 하라는 문구조차 나오지 않는 경우 따로 설정해야 하는 부분이 있을까요?
duckssi.tistory.com/42
해당게시글의 뷰바인딩 사용방법을 숙지하시기 바랍니다.
@@hongdroid94 해당 게시글에는 메인엑티비티.java 만 기술되어있고 .kt는 없는데다 메인엑티비티에 게시글의 코드를 추가하여 빌드를 시키면 ActivityMainBinding나 hongdroid와 같은 글자가 있는 줄에서 계속 오류가 뜹니다. 뷰바인딩 어떻게 해야하는 건가요 ㅠㅠ...
질문좀 알려주세요!!ㅠㅠ
메인xml파일에 있는 이미지를 화면전환 하면서 서브xml파일에 있는 이미지에 덮을려고 합니다
이런경우 어떻게 해야하나요? 이미지는 int호 알고있는데 어렵네요
SubActivity 화면에서 상단 왼쪽에 백버튼 나오게 하려면 어떻게 하나요?
??? 코틀린 종결자 ; 안쓰나요??? ㄷㄷ..... 파이썬 수준
btn_a.setOncl 입력하는 부분에서 alt+enter을 눌러도 해결이 되지않습니다..... 어떻게 해야할까요?? setOnclickListener도 입력 매크로에 나오지 않네요
고정댓글에서 안내하는대로 수정하셔야합니다
우왕. 저도 이것때메 삽질 ㅠ.ㅠ
@@파이찬손 해결하셧나요??
@@기능인푸용 고정댓글대로 하면된다고 하시더라구요. 근데 넘 어려워 보여서요. 저는 xml 파일에서 onClick 쓰는 방법이 제일 쉬웠던것 같아요. 아니면 코틀린에서 기존처럼 findviewbyid 형식으로 참조 만들고 쓰는 방법도 있더라구요.
혹시 서브엑티비티에서 메인엑티비티로의 데이터 이동은 어떻게 해야하나요?
startActivityForResult 강의를 참고하시면 있습니다
@@hongdroid94 오 빠른 답변 감사해요!!
정말 똑같이 했는데 서브 화면으로 이동 후 글자가 왜 안나올까요...? ㅜ
완전 쌩 초짜입니다. 3강째 듣고 있는데, 전체적으로 말이 빨라서 0.75배속으로 듣네요..
발음이 약간 뭉개져서 불편한점이 있습니다.
강의 속도를 조절하시면 좋을것같고..
그리고 중간에 어.... 어... 이런부분이 많이 나오는데
시나리오를 한번에 써놓으시고 강의하는게 아니시고
그냥 머릿속으로 구상만 해서 강의하시는것같아요..
만약 써놓고 하시는거라면 편집을 통해서 어.. 어.. 이런부분만 제거해도 영상길이가 짧아져서 몰입감이 생길것같습니다.
중간에 언어 선택도 같은단어(?)를 지칭하면서 꾸러미라고 했다가 객체라고 했다가..
저같은 초보가 듣기에는 약간 강의가 부족한감이 있네요.
이해잘되는구만 뭐그렇게 불만이 많아요 님같은 초보가 듣기에는 강의가 부족한 면이 있는게 아니라 강의는 괜찮은데 님이 부족한겁니다
눈높이에 맞춰서 잘만 가르쳐주고있는데... 학창시절에도 공부못하는 애들이 꼭 공부할 생각은 안하고 이상한거 탓하죠.