묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결코딩의민족 앱 제작 (Android kotlin)
View Binding으로 GridView를 구현하고 싶습니다.(섹션0-GridView 강의 문의)
안녕하세요. 섹션0의 Gridview를 실습 문의드립니다. 질문내용 : 'kotlin-android-extensions' 에서 View Binding으로 교체하고 싶습니다. 상황설명 : (1) 실습후 빌드하면 'kotlin-android-extensions' 이 종료되었다고 합니다. 이로 인해 실습을 따라하면 빌드 에러가 발생되고 있습니다.(참고사진-1) (2) 참고사진-1에서 빌드 콘솔에 나오는 가이드 개발자 사이트의 설명에 따라 View Binding으로 코드를 갱신하고 있습니다만 GridViewAdapter.kt등에 어떻게 적용해야 할지 감을 못 잡고 헤메고 있습니다.[참고사진-1.build시 에러 장면][참고사진-1.build의 콘솔 내용]The 'kotlin-android-extensions' Gradle plugin is no longer supported. Please use this migration guide (https://goo.gle/kotlin-android-extensions-deprecation) to start working with View Binding (https://developer.android.com/topic/libraries/view-binding) and the 'kotlin-parcelize' plugin. 조언 등을 부탁드립니다. 감사합니다. 부록.해당 실습예제코드(gitHub)https://github.com/BoSeongGim/practice_coding/tree/main/andorid(mobile)/clone_cording(cording_peoples)
-
미해결[중급편] 친절한 JETPACK 개론 <상> (Android Kotlin)
에러
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.DataBinding 과 data class 강의 듣고잇는중입니다xml에서 버튼에 myClick을 연결시킨 부분부터 애뮬레이터에서 버튼을 누르면 애플리케이션이 자동종료됩니다.코드를 똑같이 따라쳣는데 왜 이렇게 된건지모르겟습니다.에러내용입니다(코드내용 똑같다고 보면 될거같습니다.) <?xml version="1.0" encoding="utf-8"?> <layout 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"> <data> <variable name="user" type="com.actual.jetpack_ex_databinding2.Person" /> </data> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <TextView android:id="@+id/test" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text= "@{user.name}" android:textSize="50sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text= "@{Integer.toString(user.age)}" android:textSize="50sp" /> <TextView android:textSize="100dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.age > 30 ? `나이 많음` : `나이 적음`}" /> <Button android:text = "btn" android:onClick="myClick" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> </layout> package com.actual.jetpack_ex_databinding2 import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import android.view.View import androidx.databinding.DataBindingUtil import com.actual.jetpack_ex_databinding2.databinding.ActivityMainBinding class MainActivity : AppCompatActivity() { private lateinit var binding : ActivityMainBinding var testCount = 20 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = DataBindingUtil.setContentView(this, R.layout.activity_main ) // binding.test.text= "바뀐 텍스트" val person = Person("개복치", 20) binding.user= person fun myClick(view : View) { Log.d("MainActivity", "onClick") testCount++ val person = Person("개복치", testCount) binding.user = person } } } package com.actual.jetpack_ex_databinding2 data class Person ( val name : String, val age : Int )FATAL EXCEPTION: main Process: com.actual.jetpack_ex_databinding2, PID: 7731 java.lang.IllegalStateException: Could not find method myClick(View) in a parent or ancestor Context for android:onClick attribute defined on view class com.google.android.material.button.MaterialButton at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:506) at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:464) at android.view.View.performClick(View.java:7659) at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1213) at android.view.View.performClickInternal(View.java:7636) at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0) at android.view.View$PerformClick.run(View.java:30156) at android.os.Handler.handleCallback(Handler.java:958) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:205) at android.os.Looper.loop(Looper.java:294) at android.app.ActivityThread.main(ActivityThread.java:8177) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971) 그전까지는 잘 되는거로 보아 onClick="myClick" 부분이 문제인것같은데 잘 못찾겟습니다.
-
해결됨[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
초급용 미리보기 영상을 보며 따라하고 있습니다.
안녕하세요!1) 초급용 추천받아서 미리보기로 영상을 따라하고 있는데 영상과 다르게 'build configuration language'가 계속 뜨고2) 'android studio' 다운 받을 때 저는 'android studio giraffe'로 다운을 받았는데 이건 버전을 나누기 위해 다른 게 맞나요?
-
해결됨[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
만든 후 activity_main.xml이 없습니다. MainActivity.kt의 로고도 이상합니다.
안녕하세요!위 화면에서 finish후 나오는 화면입니다.
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
쿼리에 fetch 쓰는 부분
쿼리에 fetch 쓰는 부분과 Entity 자체에서 FetchType.LAZY 써주는것과 같은 방법으로 볼 수 있을까요?
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
람다 함수 중복 문제가 발생했는대 해결을 못하고있습니다.
명언 앱 마지막 부분에서 컴파일을 실행하면 발생하는 오류가 있습니다. Type com.cho.goodwards.MainActivity$$ExternalSyntheticLambda0 is defined multiple times: /Users/mac/Desktop/개인공부/Kotlin_ex/ex.5/app/build/intermediates/project_dex_archive/debug/out/com/cho/goodwards/MainActivity 2.dex, /Users/mac/Desktop/개인공부/Kotlin_ex/ex.5/app/build/intermediates/project_dex_archive/debug/out/com/cho/goodwards/MainActivity.dex 예제 파일을 받아 복붙해도 똑같이 오류가 발생합니다. gpt 에 질문 하니 binding = DataBindingUtil.setContentView(this, R.layout.activity_main) binding.showAllSentenceBtn.setOnClickListener { val intent = Intent(this, SentenceActivity::class.java) startActivity(intent) } binding.goodWordTextArea.setText(sentenceList.random()) } 이부분에서 문제가 생긴다고 하는대 안드로이드 처음이라 오류 찾는게 좀 힘듭니다. 구글링에서도 그래들 빌드 설정을 바꿔라는대 제가 잘못 수정했는지 오류가 여전히 걸리더군요
-
미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
매칭리스트를 눌러도 아무 반응이 없어요
계정 여러개 생성하여 서로 매칭을 시켜 알람까지 갔는데 MY MATCHING LIST를 눌러도 아무 반응이 없네요 어디가 문제인지 봐주실 수 있을까요?전체코드 깃허브 주소 -https://github.com/alsxm4625/sogating4/commit/e1307ce30381e77d678b715b3227f2e1a00d9a09
-
미해결모던 안드로이드 - Jetpack Compose 입문
나만의 웹브라우져 01 코딩 후 실행하면 아래와 같은 오류가 뜨네요
We recommend using a newer Android Gradle plugin to use compileSdk = 34 This Android Gradle plugin (8.0.2) was tested up to compileSdk = 33. You are strongly encouraged to update your project to use a newer Android Gradle plugin that has been tested with compileSdk = 34. If you are already using the latest version of the Android Gradle plugin, you may need to wait until a newer version with support for compileSdk = 34 is available. To suppress this warning, add/update android.suppressUnsupportedCompileSdk=34 to this project's gradle.properties. 안드로이드 스튜디오버젼이 강사님과 달라 아직 헤메고 있습니다MainActivity.ktimport android.os.Bundle import android.webkit.WebView import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowBack import androidx.compose.material.icons.filled.ArrowForward import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.unit.dp import androidx.compose.ui.viewinterop.AndroidView class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { HomeScreen() } } } @OptIn(ExperimentalMaterial3Api::class) @Composable fun HomeScreen() { Scaffold ( topBar = { TopAppBar( title = { Text("")}, actions = { IconButton(onClick = { }){ Icon( imageVector = Icons.Default.ArrowBack, contentDescription = "back", tint = Color.White ) } IconButton(onClick = { }){ Icon( imageVector = Icons.Default.ArrowForward, contentDescription = "forward", tint = Color.White ) } } ) } ) { paddingValues -> OutlinedTextField( value = "", onValueChange = {}, label = { Text("https://")}, modifier = Modifier .padding(paddingValues) .fillMaxWidth(), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Search), keyboardActions = KeyboardActions(onSearch = {}), ) Spacer(modifier = Modifier.height(16.dp)) MyWebView() } } @Composable fun MyWebView() { AndroidView( modifier = Modifier.fillMaxSize(), factory = { WebView(it).apply { loadUrl("https://google.com") } }, update = {}, ) } build.gradle(Project)plugins { id 'com.android.application' version '8.0.2' apply false id 'com.android.library' version '8.0.2' apply false id 'org.jetbrains.kotlin.android' version '1.7.20' apply false } build.gradle(Module :app)plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' } android { namespace 'com.dongguntech.compose_mywebbrowser' compileSdk 34 defaultConfig { applicationId "com.dongguntech.compose_mywebbrowser" minSdk 26 targetSdk 34 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { useSupportLibrary true } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8.10' } buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion '1.4.3' } packagingOptions { resources { excludes += '/META-INF/{AL2.0,LGPL2.1}' } } } dependencies { var lifecycle_version = "2.5.1" // 2.6.2 버젼은 오류가 남 var arch_version = "2.1.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") // ViewModel utilities for Compose implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:2.2.0:78") // optional - Test helpers for Lifecycle runtime testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") implementation "androidx.compose.animation:animation:1.5.4" implementation "androidx.compose.foundation:foundation:1.5.4" implementation "androidx.compose.material:material:1.5.4" implementation "androidx.compose.material3:material3:1.1.2" implementation "androidx.compose.runtime:runtime:1.5.4" implementation "androidx.compose.ui:ui:1.5.4" implementation 'androidx.compose.ui:ui-graphics' implementation 'androidx.compose.ui:ui-tooling-preview' implementation 'androidx.core:core-ktx:1.12.0' implementation platform('org.jetbrains.kotlin:kotlin-bom:1.8.0') implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2' implementation 'androidx.activity:activity-compose:1.8.1' implementation "androidx.wear.compose:compose-foundation:1.2.1" implementation "androidx.wear.compose:compose-material:1.2.1" implementation "androidx.wear.compose:compose-navigation:1.2.1" debugImplementation 'androidx.compose.ui:ui-tooling' debugImplementation 'androidx.compose.ui:ui-test-manifest' implementation platform('androidx.compose:compose-bom:2022.10.00') testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' androidTestImplementation platform('androidx.compose:compose-bom:2022.10.00') androidTestImplementation 'androidx.compose.ui:ui-test-junit4' } 참고로 제가 사용중인 안드로이드 스튜디오버젼은Android Studio Flamingo | 2022.2.1 Patch 2입니다
-
미해결[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기
DTO 생성 과정에서 궁금한 점이 있어요!!
DTO를 생성할 때 코드가 너무 많이 생성되는데 더 간편하고 쉽게 벨리데이션 처리할 수 있는 방법은 없을까요?
-
미해결[LV1] Jetpack Compose - UI 연습하기
이력서앱의 화면이 강사님과는 너무 달라서 어찌 ???
화면이 강의내용과 너무달라 강사님의 강의화면과 같이 고치려면 아직 초보라서 ㅠㅠㅠ 저의 코드는 아래와 같습니다import android.content.Intent import android.net.Uri import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Card import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.Button import androidx.compose.material3.CardDefaults import androidx.compose.material3.Divider import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { MyResume() } } } @OptIn(ExperimentalMaterial3Api::class) @Composable fun MyResume() { Scaffold( topBar = { TopAppBar( title = { Text("이력서만들기") }, ) } ) { paddingValues -> MyResumeContent(paddingValues) } } @Composable fun MyResumeContent(paddingValues: PaddingValues) { var context = LocalContext.current Card( modifier = Modifier .padding(20.dp) .fillMaxWidth(), colors = CardDefaults.cardColors(Color.LightGray), elevation = CardDefaults.cardElevation( defaultElevation = 10.dp // 테두리음영의 농도 ), shape = RoundedCornerShape(30.dp) // 둥근모서리(5.dp)를 줌 ) { Column( modifier = Modifier .fillMaxSize() .padding(20.dp), ){ Image( painter = painterResource(id = R.drawable.mypic), contentDescription = "내사진", modifier = Modifier .size(150.dp) .clip(CircleShape) .align(Alignment.CenterHorizontally) ) Spacer(Modifier.height(20.dp)) Text( "자기소개", fontSize = 23.sp, modifier = Modifier .align(Alignment.CenterHorizontally), ) Spacer(Modifier.height(10.dp)) Text( "안녕하세요 저는 이동검입니다. 언제나 긍정적으로 살기를 노력하고 이웃과 사회와 인류를 이롭게하는 삶이 되기를 원합니다 ", fontSize = 19.sp, modifier = Modifier .align(Alignment.CenterHorizontally), ) Spacer(Modifier.height(10.dp)) Text( "하지만 떄떄로 먹고사는 문제에 부딫쳐 초심을 잃어버릴 때도 있었지요 ... ", color = Color.Red, fontSize = 17.sp, modifier = Modifier .align(Alignment.CenterHorizontally), ) Spacer(Modifier.height(10.dp)) Divider( // 줄간격내에 선긋기 thickness = 1.dp, color = Color.Gray ) Spacer(Modifier.height(10.dp)) Text( "핸드폰번호 : 010 - 1234 - 5678", fontSize = 17.sp, modifier = Modifier .padding(20.dp) ) Text( "이메일 : abc@google.com", fontSize = 17.sp, modifier = Modifier .padding(20.dp) ) Spacer(Modifier.height(10.dp)) Button( onClick = { var intent = Intent(Intent.ACTION_DIAL, Uri.parse("tel: 01012345678")) context.startActivity(intent) }, modifier = Modifier.fillMaxSize(), ){ Text("전화걸기") } Button( onClick = { var intent = Intent(Intent.ACTION_SENDTO) .apply { data = Uri.parse("mailto:abc@google.com") } context.startActivity(intent) }, modifier = Modifier.fillMaxSize(), ){ Text("메일보내기") } } } }
-
미해결[2023 코틀린 강의 무료제공] 기초에서 수익 창출까지, 안드로이드 프로그래밍 A-Z
대시보드 설정 마지막 단계 Google Play에 앱 게시
안녕하세요대시보드 설정 마지막 단계 Google Play에 앱 게시 단계는 현재는 내부 및 비공개 테스트를 필수적으로 거쳐야 진행 가능한 단계인 것이 맞나요?단계별로 따라 오고 있었는데 해당 단계에서 진행이 불가능하여 제가 파악한 내용이 맞는지 확인하고 싶어 질문 드립니다
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
강의 내용 수정 요청드립니다.
안녕하세요~ 수강생입니다 강의 정말 잘 듣고있습니다^^다름이 아니라18강 6:08 에서 lastOrNull 설명이 "첫번째" -> "마지막" 으로 변경되어야 할 것 같습니다. 감사합니다~!
-
미해결[LV1] Jetpack Compose - UI 연습하기
TopAppBar 관련부분에 빨간줄이 ..
실행하면Type mismatch: inferred type is Unit but Modifier was expected : 27즉 27번 라인에서 오류가 난다네요ㅠㅠㅠ
-
미해결[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기
2.5강에서 포스트맨 오류와 전에 실습한 내용에 대해 질문 드립니다
강의 내용을 최대한 놓치지 않고 다 작성한 것 같은데 포스트맨에 나오는 내용이 다릅니다..[22:12:33.504][WARN ][org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.logException:line207] - Resolved [jakarta.validation.ConstraintDefinitionException: HV000243: Constraint ConSilkTea.SmallRecordServer.common.annotation.ValidEnum references constraint validator type ConSilkTea.SmallRecordServer.core.annotation.ValidEnumValidator, but this validator is defined for constraint type ConSilkTea.SmallRecordServer.core.annotation.ValidEnum.]이건 로그에 나온겁니다..전에 했던 블로그 api랑 충돌이 일어나는 것 같은데서버 하나당 api는 1개 밖에 사용을 못할까요?다중으로 사용하고 싶다면 어떻게 변경을 하면 좋을지 몰라 질문 남깁니다
-
미해결[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기
TokenProvider의 Key 관련하여 질문이 있습니다.
안녕하세요, 강의 너무 잘 보고있습니다.`JwtTokenProvider.kt` 생성 중, 궁금한 것이 있어 질문 남깁니다. createToken에서 signWith에 사용하는 key를 private val key by lazy { Keys.hmacShaKeyFor(Decoders.BASE64.decode(secret)) }yml파일에 쓴 key 그대로 사용하는 것이 아닌, 아래와 같이 한번 더 decode를 거치는 것으로 보여지는데요. signwith를 통해 또 다시 HS256으로 인코딩 하는데, 그 전에 한번 더 디코딩한 키를 넣는 이유가 궁금합니다!
-
미해결[중급편] 친절한 JETPACK 개론 <하> (Android Kotlin)
강의에서 말씀하시는 레포지토리가
페이징소스 말씀하시는건가요?? 페이징 강의에서 레포지토리 활용하는건 계속 못 본 것 같아서요 ㅠㅠ
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
RecyclerView 생성 관련 질문 있습니다.
RecyclerView 를 만들어 , 아이템목록을 HomeFragment 화면에 띄우게 하려면, 어떻게 해야할까요? HomeFragment.xml에 recyclerview 를 추가하고 , ContentListActivity의 내용을 HomeFragment에 옮기고 , Adapter 연결또한 HomeFragment 와 연결해주면 가능한가요? 직접 해보니 잘 안돼서 질문드립니다.
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
꺼짐 현상
질문 시 전체 프로젝트 코드를 깃허브/구글 드라이브에 올리신 후 링크를 공유해주시면좀 더 빠르게 도움드릴 수 있습니다.https://drive.google.com/file/d/1lNIdqkBgFYh9sKKKL9f9GDCkewtzB9p5/view?usp=sharing 그 전 강의 부터 안되긴 햇는데요 ( 사진 클릭을 하면 링크로 안넘어가지고 스크립트 활성화를 시키라고 해서webView.settings.javaScriptEnabled = true부분을 추가 했습니다.이렇게 수정햇더니 사진을 누르면 꺼집니다.그리고 다음강의 계속 진행햇는데회원가입부분에서 에뮬레이터가 꺼집니다.어느 부분이 잘못 되었는지 모르겠습니다.
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
생성자
강사님 안녕하세요!혼자서 프로젝트를 짜면서 궁금한게 생겼는데요data class DailyHistoryResponse( val date: String?, // 전체 날짜 2023.11.11 토 val day: String?, // 날짜에서 일만 val dayName: String?, // 요일 val dayWhat: Int?, // 몇일 차 val workOutCount: Int?, val meditationCount: Int?, val workOutRate: Int?, val meditationRate: Int?, ) { constructor(workOutCount: Int?, meditationCount: Int?): this(null, null,null, null, workOutCount, meditationCount, null, null) }DailyHistoryResponse 클래스는 위처럼 생겼는데요 파라미터가 workOutCount, meditationCount 이거 두개만있는 생성자가필요해서 코드에서 맨아래 같이 constructor(workOutCount: Int?, meditationCount: Int?): this(null, null,null, null, workOutCount, meditationCount, null, null) 이렇게 했었는데요..저기서 null하나하나 넣는게 불편하더라고요.. 제가 원하는 코드를 짜기위해서 지금 제가 작성한 코드말고 좋은방법있을것같은데 .. 가르쳐주실수 있을까요?
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
domain private
강사님 안녕하세요 코드를 작성하면서 궁금증이 생겼습니다.보통 Book이라는 엔티티를 만들면필드는 private을 붙여주잖아요 java에서는요근데 왜 코틀린에선 붙여주지않나요?