묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모던 안드로이드 - Jetpack Compose 입문
구글맵 질문입니다
현재 compose에서 구글맵 사용가능한거 같은데 혹시 관련 예제 있으신가요??
-
해결됨[중급편] 친절한 JETPACK 개론 <상> (Android Kotlin)
[Retrofit 간단한 예제 변경 + RecyclerView 추가] 에 databinding 추가해 보았습니다.
안녕하세요, 좋은 강의 만들어 주셔서 감사합니다. [Retrofit 간단한 예제 변경 + RecyclerView 추가] 강의 말미에 말씀해주신대로 recyclerview에 databinding 을 추가해 보았습니다. (Android view에 대한 접근 강의 마지막 챕터 databinding + adapter 참고해서 )화면에 데이터가 나오긴 하는데 제대로 적용된것이 맞는지 궁금합니다. + 추가적으로, MainActivity에서 databinding이용해서 viewModel 데이터 결합을 해줘야 하는건지 궁금합니다. (아직 dataBinding 다른 라이브러리와 함께 사용할때 헷갈리는 부분이 많아서ㅠ )답변 주시면 감사하겠습니다. 변경된 부분은 1. text_row_itemCustomAdatperactivity_main.xmlMainActivitytext_row_item : : <layout> 감싸고 data class Post로 데이터 결합 <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="myData" type="com.example.a04withrecyclerview.model.Post" /> </data> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/myText" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@{myData.title}" android:textSize="20dp"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="******" /> </LinearLayout> </layout>CustomAdapterMyviewHolder dataBinding으로 수정class CustomAdapter(private val dataSet : ArrayList<Post>) : RecyclerView.Adapter<CustomAdapter.MyViewHolder>() { class MyViewHolder(binding : TextRowItemBinding) : RecyclerView.ViewHolder(binding.root){ val text : TextView = binding.myText } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { //val view = LayoutInflater.from(parent.context).inflate(R.layout.text_row_item, parent, false) val view = DataBindingUtil.inflate<TextRowItemBinding>(LayoutInflater.from(parent.context), R.layout.text_row_item, parent,false) return MyViewHolder(view) } override fun onBindViewHolder(holder: MyViewHolder, position: Int) { holder.text.text = dataSet[position].title } override fun getItemCount(): Int { return dataSet.size } }activty_main : <layout> 감싸기<layout> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/rv" android:layout_width="match_parent" android:layout_height="match_parent"/> </androidx.constraintlayout.widget.ConstraintLayout> </layout>MainActivity: dataBinding 적용class MainActivity : AppCompatActivity() { private lateinit var binding : ActivityMainBinding private lateinit var viewModel : MyViewModel override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() binding = DataBindingUtil.setContentView(this, R.layout.activity_main) ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) insets } viewModel = ViewModelProvider(this).get(MyViewModel::class.java) viewModel.getPostAll() //val rv = findViewById<RecyclerView>(R.id.rv) viewModel.liveWordList.observe(this){ val customAdapter = CustomAdapter(it as ArrayList<Post>) binding.rv.adapter = customAdapter binding.rv.layoutManager = LinearLayoutManager(this) } } }
-
미해결[중급편] 친절한 JETPACK 개론 <상> (Android Kotlin)
Navigation Data Transfer Safe Args 강의중에서
override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?, ): View? { val view = inflater.inflate(R.layout.fragment_blank1, container, false) val action = BlankFragment1Directions.actionBlankFragment1ToBlankFragment2("ABCDE")위의 코드중에서 "ABCD" 부분에서 빨간줄이 생기고 오류가 나네요 ... 왜 그럴까요 ???소스코드는 아래 GITHUB 에 올려두었습니다https://github.com/dongguntechnology/NaviDataTransfer
-
미해결[중급편] 친절한 JETPACK 개론 <상> (Android Kotlin)
viewModel 초기화 관련 질문드려요
저번 강의에서는 viewModel 초기화 시에 Activity에 viewModel을 선언하고 Fragment에서는 viewModel 선언 시 by activityViewModels 를 사용했던 기억이 있습니다. 현재 해당 강의를 실행해볼 환경이 아니여서 그런데 강의 코드대로 구동을 할 경우는 화면 회전 시 카운터 값이 0으로 초기화 되게 되나요? 아니면 LiveData를 사용할 경우 해당 viewModel 초기화를적용하지 않아도 데이터 값이 유지되게 되나요?
-
미해결[중급편] 친절한 JETPACK 개론 <상> (Android Kotlin)
Fragment에서 ViewBinding과 DataBinding 초기화 차이가 궁금합니다.
ViewBinding과 DataBinding 각 강의에서 fragment에 binding을 초기화해주는 부분에 차이가 있습니다. ViewBinding의 경우에는 fragment의 생명주기로 인한 메모리 누수 방지를 위해 onDestroyView에서 binding = null 처리를 해주기 위해 _binding, binding을 따로 선언해주는 것으로 알고 있는데요. DataBinding의 경우는 ViewBinding과는 또 다른것인지요? 아니면 DataBinding의 경우 역시 private var _binding: FragmentTestBinding? = nullprivate val binding get() = _binding으로 초기화를 해주는 것이 메모리 누수 예방을 위해 더 좋은 것인지 궁금합니다.
-
미해결[중급편] 친절한 JETPACK 개론 <상> (Android Kotlin)
최상단 변수 선언 관련하여 질문드려요
private var _binding과 private val binding을 따로 선언하는 이유가 뭔지 궁금합니다. getter을 이용해서 _binding을 binding에 묶어주었는데 이렇게 코드를 작성하는 이유가 있을까요?
-
미해결모던 안드로이드 - 코틀린과 Jetpack 활용
Room_DB코틀린 버전에서 에러 나시는 분들
코틀린 최신 버전으로 프로젝트를 만드셔서 그렇습니다.2023년 7월부터 Room적용 방식이 조금 달라졌어요.https://developer.android.com/topic/libraries/view-binding/migration공식문서 입니다.이제 뷰(UI ID)에 바로 접근할 수 없습니다.적용 방식이 달라졌으니 공식 문서에서 참고 해보시겠어요?이 부분 적용하셨으면https://developer.android.com/jetpack/androidx/releases/room#kts빌드그래들쪽에 이것도 적용하셔야 합니다.main에서 뷰 접근 코드는 이런식으로 작성하시면 됩니다. :)
-
해결됨아이비의 안드로이드 드릴
[실습] 7. 추상클래스와 인터페이스 에서 stepCount에 대한 질문이 있습니다.
해결완료 질문입니다.
-
해결됨[LV1] Jetpack Compose - UI 연습하기
강의자료 링크에 접근이 되지 않습니다.
강사님 해당 강의자료 링크에 접근이 되지 않습니다.일정이 급해 빠른 확인 부탁 드립니다!https://gainful-topaz-82f.notion.site/LV1-JETPACK-COMPOSE-UI-5ee7e194eb8c487780c4fa586b37c3fe?pvs=4 Error : Bad gateway Error reference number: 502
-
미해결[중급편] 친절한 JETPACK 개론 <상> (Android Kotlin)
Retrofit + ViewModelScope + RecyclerView + Glide 강의중에서
CustomAdapter.kt 파일내 Glide.with(context)이부분에서 빨간줄이 생기고 Unresolved reference: Glide라는 에러메세지가 생기네요build.gradle.ktsimplementation("com.github.bumptech.glide:glide:4.13.0'") annotationProcessor("com.github.bumptech.glide:compiler:4.14.2")
-
미해결[중급편] 친절한 JETPACK 개론 <상> (Android Kotlin)
Retrofit 간단한 예제 변경 강의중에서
강사님 늘 감사드리고 건강하시고 부자되세요아래의 코드를 작성하여 실해하여도 에뮬레이터에 아무런 출력이 생기지 않는데 왜 그런지 ...자료는 git 에 올려두었습니다 https://github.com/dongguntechnology/RetrofitViewModelScope
-
미해결[LV1] Jetpack Compose - UI 연습하기
@OptIn(ExperimentalMaterial3Api::class) 질문
안녕하세요 강사님! 좋은 강의 감사합니다텍스트필드 함수를 만들때 @Composable 위에 또 @OptIn 어노테이션이 추가가 되는데 제가 작성할때에는 추가가 안되어도 딱히 에러가 발생하고 그러진 않는것 같더라구요혹시 OptIn이 어떨때 쓰는건지? 에러가 발생하지 않는다면 생략이 가능한 부분인건지 질문드립니다!
-
미해결모던 안드로이드 - 코틀린과 Jetpack 활용
Room db kotlin 관련질문
우선 강사님의 강의내용을 dataBinding 과 viewBinding을 적용해 코드를 바꾸니실행이 않되고 앱이 죽는군요해당 파일들을 git 에 올려두었습니다https://github.com/dongguntechnology/db_Room2 buildFeatures {dataBinding = trueviewBinding = true}
-
미해결모던 안드로이드 - 코틀린과 Jetpack 활용
Room db kotlin 강의중에서
강사님 늘 건강하시고 부자되세요 아래 activity_main.xml 내의 요소들과 관련된 부분에서 빨간줄이 생깁니다 왜 그런지 .....
-
미해결[LV1] Jetpack Compose - UI 연습하기
Jetpack Compose의 화면구성
안녕하세요 좋은 강의 잘 듣고 있습니다.강의를 수강하다 의문이 생겨 질문을 올립니다.<질문>xml만을 이용해서 프로젝트를 해오다가 컴포즈에 관심이 생겨서 시작하게 되었는데 컴포즈의 경우 보통 액티비티를 시작하는 1개만 쓰는 지 궁금합니다. xml방식의 경우에는 화면 이동을 위해서 startActivity같은 걸이용해서 전환을 하기에 새로운 화면이 필요하다면 모든 경우 액티비티를 만들고 그에 맞는 xml을 디자인해왔습니다. 그런데 컴포즈는 꼭 액티비티를 사용하지 않고도 메인 액티비티에서 @Composable을 부르고 네비게이션으로 다음 Compose화면으로 넘어가면 굳이 액티비티를 구성하지 않아도 정상적으로 작동이 되더라구요. 혹시나 그렇다면 UI화면별로 필요한 kt만 만들고 네비게이션으로 이어만 주면 되는건가요?<질문2>추가적으로 강사님께서 Box를 쓸 때도 있고 바로 Column을 쓸 때도 있고 Surface를 사용하시는 경우도 있는데 어떨 때 각각을 사용하시는지? 궁금합니다!
-
미해결[중급편] 친절한 JETPACK 개론 <상> (Android Kotlin)
LiveData 와 MutableLiveData 차이강의중에서
늘 수고많으신 개복치강사님 24년 갑진년에도 건강하시고 부자되세여 viewModel = ViewModelProvider(this).get(MainViewModel::class.java)위 코드에서 아래와 같은 오류가 발생하네요 Type mismatch: inferred type is MainViewModel but ViewModel was expected
-
미해결[LV1] Jetpack Compose - UI 연습하기
프로젝스 생성 시 EmptyComposeActivity를 만드는 건가요?
안녕하세요.UI를 더 잘 그리고 싶어서 강의를 듣기 시작했습니다.프로젝트를 만드는 법에 Empty Activity를 선택하시라고 했는데, Empty Activity를 생성하면 MainActivity가 강의와 다른것 같습니다.Empty Compose Activity의 아이콘 이미지가 프로젝트 만드는 법에서 선택된 Empty Activity 와 같은데 Empty Compose Activity로 만들면 되는 것인지 문의 드립니다. 감사합니다.
-
미해결[중급편] 친절한 JETPACK 개론 <상> (Android Kotlin)
Activity/Fragment ViewModel 공유 10분35초경에 fragment 에 viewModel선언
viewModel 선언하고MainViewModel by activityViewModel 이렇게 넣는코드있잖아요.혹시 구글이 공식적으로 이런식으로 액티비티와 프래그먼트간에 데이터를 공유할때 이렇게 써라라고 한 문서가있나요?되게 간편해보이는데, 제가 못찾고있는느낌이나서,저게아니라면 구글에서는 어떤 방식으로 activity와 fragment 에서 viewModel 에 대해서 공유하라는 제안이있는 공식문서 출처좀 알수있을까요??
-
미해결모던 안드로이드 - Jetpack Compose 입문
구글맵강의중에서 ..
설날을 맞이하신 강사님 새해에도늘 건강하시고 부자되세요 ^^ 프로젝트폴더에서 New >> Fragment >> Google Map Fragment 를 선택하고 Fragment Name 을 MapsFragment 로 해서 Finish 버튼을 누르면프로젝트폴더내에 MapsFragment.kt 파일과res/layout 폴더내에 fragment_maps.xml 파일은 생성이 되나res/values 폴더내에 google_maps_api.xml 파일은 생성되지 않습니다 그리고 관련파일들을 실행하여도 오류는 없으나구글맵이 나타나지 않고 빈화면만 뜹니다 git 에 파일들을 올려두었습니다https://github.com/dongguntechnology/GoogleMap
-
해결됨아이비의 안드로이드 드릴
툴바 제목에 폰트색상 적용이 안됩니다.
안녕하세요 강사님, 수업 잘 듣고 있습니다.폰트 색깔이 변경되지 않아 질문드립니다강의내용과 동일하게 스타일을 적용했는데 여전히 검은색으로 나오는 문제가 반복됩니다. 아래와 같이 코드를 변경하고, apptexttitle을 적용했을 때에도 회색으로 변경되지 않는 문제가 있습니다. 어떤 걸 살펴봐야 할까요? <?xml version="1.0" encoding="utf-8"?> <resources> <style name="AppToolbar" parent="Widget.MaterialComponents.Toolbar"> <item name ="titleTextAppearance">@style/AppTextTitle.S18</item> </style> <style name="AppTextTitle"> <item name="android:textColor">@color/gray10</item> <item name="android:textStyle">bold</item> <item name="android:textSize">18sp</item> </style> <style name="AppTextTitle.S18"> <item name="android:textColor">@color/gray10</item> <item name="android:textSize">18sp</item> </style> <style name="AppTextS14"> <item name="android:textColor">@color/gray1</item> <item name="android:textSize">18sp</item> </style> <style name="AppTextPrimary"> <item name="android:textColor">@color/blue</item> <item name="android:textStyle">bold</item> <item name="android:textSize">14sp</item> </style> </resources>