묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
ActivityMainBinding 에러
package com.bokchi.databinding_ex import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Button import android.widget.Toast import com.bokchi.databinding_ex.databinding.ActivityMainBinding class MainActivity : AppCompatActivity() { private lateinit var binding : ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val btn = findViewById<Button>(R.id.testBtnID) btn.setOnClickListener{ Toast.makeText(this, "click", Toast.LENGTH_LONG).show() } } }이렇게 적었는데 에러가 나요..왼도우 L 눌렀는데도 안떠서 적었는데도 빨간색으로 에러만 뜸니다.....
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
프로젝트를 만들고 실행하면 에러가 떠요...
지금 프로젝트를 만들고 실행을 하면 An issue was found when checking AAR metadata: 1. Dependency 'androidx.activity:activity:1.8.0' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :app is currently compiled against android-33. Recommended action: Update this project to use a newer compileSdk of at least 34, for example 34. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on).이런 에러가 뜸니다...항상 계속 만드는데도 계속 에러가 떠서 강의를 따라갈수 없어요...어떻게 해야 될까요?
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
트로트 리스트 파일 빌드시 성공은 하지만 앱 실행이 죽어요
https://github.com/bongryeong/wonderland
-
미해결냉동코더의 알기 쉬운 Modern Android Development 입문
Flows 와 Coroutine
안녕하세요, Flows 강의를 듣는와중에 문의사항이 있어 질문드립니다. 강의 내용을 캡쳐한 것인데요.여기서 launch{ } 를 통해 코루틴이 생성되고 simple() Flow 가 실행이 되는데 flow도 코루틴으로 이루어져 있어서 마치 동시에 실행되는 것처럼 보이는게 제대로 이해한건지 궁금합니다.만약 simple() flow 대신 println("test") 와 같은 메인Thread 를 사용하는 함수가 작성되어 있었다면 test가 먼저 찍히고 I'm not blocked 1 이 먼저 나오는게 맞을까요??아니면 I'm not blocked 1 이 나오고 test 가 찍히는게 맞을까요..?
-
미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
Cloud Messaging API(기존)가 Firebase Cloud Messaging API(V1)으로 변경되었다는데
이 부분 강의를 따로 찍어주실 수 있을까요...찾아봐도 어떻게 하는지 잘 모르겠네요
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
ListView에서 해당 item의 클릭 이벤트는 어떻게 적용시키나요?
ListView를 공부하다가 해당 item을 클릭 했을때 이벤트 처리가 궁금해서 찾아봤는데 아직 내공이 부족한지 정보를 못찾아서 질문드립니다미리 답변 감사합니다
-
미해결[LV1] Jetpack Compose - UI 연습하기
Retrofit 관련 url 주소를 적을 때 주의사항입니다
// HTTP 로 요청이 필요한 부분을 interface 로 정의interface MyApi { @GET("/posts/1")// GET 요청임을 알리고, 서버내의 경로(path)를 지정 // BASE_URL 이 https://jsonplaceholder.typicode.com 일 경우 @GET("/posts/1") 로 적고// BASE_URL 이 https://jsonplaceholder.typicode.com/ 일 경우 @GET("posts/1") 로 적는다suspend fun getPost1() : Response<Post> } 위와 같이 정리해 보았는데 이게 맞는지 ㅎㅎㅎ
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
databinding 오류 관련해서 문의드립니다
안녕하세요?명언앱 만들기에서 데이터바인딩할 때부터 오류가 나서무시하고 메인 액티비티에서 <layout>으로 감싸 주었는데그뒤 private lateinit var binding = ActivityMainBinding에서 또 오류가 나서 진행을 못하게 되었습니다.해결 방법을 말씀해 주시면 감사하겠습니다.감사합니다.
-
미해결모던 안드로이드 - Jetpack Compose 입문
비만도계산기 로직작성 에서 문제가 발생했어요 ^^
강사님 해당 프로젝트를 실행하니 에뮬화면이 검게 변하면서아무것도 보이지 않습니다제가 어떤 부분이 잘못 코딩하였는지 ..... 구글드라이브에 해당 프로젝트를 올려두었습니다 https://drive.google.com/file/d/15GTTot8jci11xvK1OFpTiOVw2HYTKOZ4/view?usp=drive_link
-
해결됨실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
방법2. custom setter 사용하기에 대해 질문
안녕하세요!오랜만에 재수강 중인데 다시보다가 질문이 있어서 남깁니다! 2분41초에서 setter를 private으로 두고 싶은 경우 private set을 이용하기라고 되어 있는데요.JPA와 함께 사용하게 된다면 저는 엔티티 클래스의 경우 gradle 설정에서 OPEN설정을 해주는데, open으로 두게 되면 private set 기능은 사용이 불가능 하더라고요. 이 부분에서 jpa의 프록시 기능 사용이 안 되는 것으로 알고 있는데 TRADE-OFF의 영역인지 아니면 제가 모르는 다른 설정으로 프록시 기능을 사용하면서 private set을 사용할 수 있는지 궁금합니다!.
-
해결됨[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
프래그먼트 오류 입니다
실행 시켰을 때 아래와 같은 오류가 나옵니다. 여기서 build.gradle에서 compileSdk 를 34로 변경해 주면 실행 버튼 자체가 비활성화 됩니다 대체 왜 이런지...제발 도와주세요ㅠㅠ
-
미해결[LV1] Jetpack Compose - UI 연습하기
Retrofit 관련 Logcat 화면에 아래 예외가 출력
build.gradle 에 아래를 추가한 후 sync now 하고나서 implementation("com.squareup.retrofit2:retrofit:2.9.0") implementation("com.squareup.retrofit2:converter-gson:2.9.0") 아래는 전체코드입니다class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val coroutineScope : CoroutineScope = rememberCoroutineScope() val retrofitInstance = RetrofitInstance.getInstance().create(MyAPI::class.java) Box( modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center, ) { Button( onClick = { coroutineScope.launch { val response : Response<Post> = retrofitInstance.getPost1() Log.d("MainActivity", response.body().toString()) } } ) { Text( "Call API" ) } } } } } data class Post( val userId : Int, val id : Int, val title : String, val body : String, ) object RetrofitInstance { val BASE_URL = "https://jsonplaceholder.typicode.com/posts/1/" val client = Retrofit .Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .build() fun getInstance() : Retrofit { return client } } interface MyAPI { @GET("posts/1") suspend fun getPost1() : Response<Post> } 위를 실행하니Logcat 화면에 아래 예외가 출력되고 데이터를 얻어오지 못하는 군요RemoteConnection failed to initialize: RemoteConnection failed to open pipeFailed to open QEMU pipe 'qemud:network': Invalid argumentsendWakeUpEvent called on SchedulerClientBroadcastStrategyGCM_HB_ALARM release without a matched acquire! Couldn't load memtrack module 수고많으신 강사님늘 건강하시고 부자되세요
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
게시글 요소에 따른 순위 비교
안녕하세요!강의를 듣고 추가적으로 게시글을 기준에 따라 순위를 나눠 정렬하고 싶은데 어떤 방식으로 접근하면 좋을까요?댓글 수를 카운트하고, 각 게시글 아이템 요소들을 비교해서 정렬을 하고 싶은데 요소 비교를 어떻게 해야할지 감이 안잡힙니다.예를 들어 리스트뷰에서 댓글순으로 정렬을 한다면, 어떻게 하면 좋을까요?
-
미해결[LV1] Jetpack Compose - UI 연습하기
Modifier.weight의 토탈
5:03에서 토탈이 14라고 하셨는데 왜 14인지 이해가 안가서 질문 남깁니다!
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
새 프로젝트 만들어서 실행 할때 마다 에러가 뜹니다
An issue was found when checking AAR metadata: 1. Dependency 'androidx.activity:activity:1.8.0' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :app is currently compiled against android-33. Recommended action: Update this project to use a newer compileSdk of at least 34, for example 34. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 새로 프로젝트 만들어서 실행하면 위 메시지가 떠서 build.gradle.kts의compileSdk = 33를 34로 매번 바꾸고 있는데 혹시 무슨 설정을 바꾸거나 업데이트를 해서 이후 안뜨게 할수는 없는지요?
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
firebase 오류
안드로이드 스튜디오 dolphin 버전입니다
-
미해결[2023 코틀린 강의 무료제공] 기초에서 수익 창출까지, 안드로이드 프로그래밍 A-Z
개인정보처리방침에 대한 질문
구글스토어에 배포할때 개인정보처리방침을 꼭 작성해야 하는데광고 배너는 어떤식인가 궁금해서 질문 올립니다.개인정보를 따로 수집하지 않고, 올려주신 처리방침에도 광고에 관해서는 아무런 언급이 없지만광고가 맞춤형 구글광고 아닌가? 라는 생각이 들어서 조금 검색해보니 맞춤형 광고에 개인정보 불법 사용해서 벌금 물었다는 뉴스도 나오고구글애드 홈페이지에는 개인 맞춤 광고리마케팅은 개인 맞춤 광고의 타겟팅 기능 중 하나이며, 이 기능을 이용하면 내 웹사이트를 방문했거나 내 모바일 앱을 사용한 적이 있는 사용자에게 광고를 게재할 수 있습니다. 개인 맞춤 광고를 원하지 않는 사용자에 대해서는 리마케팅 데이터 수집을 중지할 수 있습니다. 그러려면 allow_ad_personalization_signals 매개변수를 사용하면 됩니다.이 매개변수의 기본값은 true로 설정됩니다. 매개변수의 값을 false로 설정하면 개인 맞춤 광고를 위한 데이터 사용이 중지됩니다. 이렇게 나오네요.이 부분에 대해서는 따로 작성을 할 필요가 없는지 아니면 신경쓸 필요 없이 그냥 GPS 정보만 취급하면 되는건지 궁금합니다.
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
firebase auth import 오류
안녕하세요! 강의 수강하고 있는 학생입니다. 무조건 arctic fox 버전을 사용해야지 auth import가 가능한걸까요?dolphin 버전 사용하고 있는데package com.example.fapplication import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import com.google.firebase.auth.FirebaseAuth import com.google.firebase.ktx.Firebase class JoinActivity : AppCompatActivity() { private lateinit var auth: FirebaseAuth override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_join) auth = Firebase.auth } }마지막 firebase.auth의 auth가 import가 안되서 질문드립니다plugins { id 'com.android.application' version '7.3.0' apply false id 'com.android.library' version '7.3.0' apply false id 'org.jetbrains.kotlin.android' version '1.7.10' apply false id("com.google.gms.google-services") version "4.4.0" apply false }plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id("com.google.gms.google-services") } android { namespace 'com.example.fapplication' compileSdk 32 viewBinding{ enabled true } defaultConfig { applicationId "com.example.fapplication" minSdk 24 targetSdk 32 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } 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' } dataBinding { enabled true } } dependencies { implementation("com.google.firebase:firebase-analytics-ktx") implementation(platform("com.google.firebase:firebase-bom:32.3.1")) implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' implementation("com.google.firebase:firebase-auth-ktx") }
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
리얼타임 데이터베이스의 저장하기,불러오기 부분은 완성 코드가 없나요? ㅠ
package com.android.diet_memo import android.app.DatePickerDialog import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import android.view.LayoutInflater import android.widget.Button import android.widget.DatePicker import android.widget.EditText import android.widget.ListView import androidx.appcompat.app.AlertDialog import com.android.diet_memo.databinding.ActivityMainBinding import com.google.firebase.database.DataSnapshot import com.google.firebase.database.DatabaseError import com.google.firebase.database.ValueEventListener import com.google.firebase.database.ktx.database import com.google.firebase.ktx.Firebase import java.util.Calendar import java.util.GregorianCalendar class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding // private lateinit var 와 lazy를 쓰는경우 정확히 어떤차이? val dataModelList = mutableListOf<DataModel>() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val database = Firebase.database val myRef = database.getReference("시발 개좆같은 fianl") val listView = findViewById<ListView>(R.id.mainLV) val adapter_list = ListVeiwAdapter(dataModelList) listView.adapter = adapter_list myRef.addValueEventListener(object : ValueEventListener { override fun onDataChange(snapshot: DataSnapshot) { for (dataModel in snapshot.children) { Log.d("Data", dataModel.toString()) dataModelList.add(dataModel.getValue(DataModel::class.java)!!) } Log.d("DataMoel",dataModelList.toString()) } override fun onCancelled(error: DatabaseError) { TODO("Not yet implemented") } }) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) binding.writebtn.setOnClickListener { val mDialogView = LayoutInflater.from(this).inflate(R.layout.custom_dialog, null) val mBuilder = AlertDialog.Builder(this) .setView(mDialogView) .setTitle("운동 메모 다이얼로그") val mAlertDialog = mBuilder.show() val DateSelectBtn = mAlertDialog.findViewById<Button>(R.id.dateSelectBtn) var dateText = "" //dateText 버튼은 변경되니까 var로 DateSelectBtn?.setOnClickListener { val today = GregorianCalendar() val year: Int = today.get(Calendar.YEAR) val month: Int = today.get(Calendar.MONTH) val date: Int = today.get(Calendar.DATE) val dlg = DatePickerDialog(this, object : DatePickerDialog.OnDateSetListener { override fun onDateSet( view: DatePicker?, year: Int, month: Int, dayOfMonth: Int ) { Log.d("Main", "${year}, ${month + 1}, ${dayOfMonth}") DateSelectBtn.setText("${year}, ${month + 1}, ${dayOfMonth}") dateText = "${year}, ${month + 1}, ${dayOfMonth}" // dateText를 이런식으로 묶음 } }, year, month, date) dlg.show() } val saveBtn = mAlertDialog.findViewById<Button>(R.id.saveBtn) saveBtn?.setOnClickListener { // Write a message to the database val healMemo = mAlertDialog.findViewById<EditText>(R.id.healthMemo)?.text.toString() val database = Firebase.database val myRef = database.getReference("final") val model = DataModel(dateText, healMemo) //계속 이런식으로 껍데기를 만드는걸 연습해야할듯,,? myRef.setValue(model) myRef .push() .setValue(model) mAlertDialog.dismiss() } } } }리스트뷰 생성후 어뎁터 연결하는부분 따라치고나서부터 알수없는 에러로,,연결이 되지않습니다42번째 라인dataModelList.add(dataModel.getValue(DataModel::class.java)!!) 부분에서 오류가 났다고 gpt선생님이 그러시는데.. 잘모르겠습니다.package com.android.diet_memo data class DataModel ( val date:String = "", val memo:String = "" )package com.android.diet_memo import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.BaseAdapter import android.widget.TextView class ListVeiwAdapter(val List : MutableList<DataModel>) : BaseAdapter() { override fun getCount(): Int { return List.size } override fun getItem(position: Int): Any { return List[position] } override fun getItemId(position: Int): Long { return position.toLong() } override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { var convertView = convertView if (convertView == null) { convertView = LayoutInflater.from(parent?.context).inflate(R.layout.listview_item,parent,false) } val date = convertView?.findViewById<TextView>(R.id.ListViewDateArea) val memo = convertView?.findViewById<TextView>(R.id.ListViewMemoArea) date!!.text = List[position].date memo!!.text = List[position].memo Log.d("Test","Date: ${date.text},Memo: ${memo.text}") return convertView!! } }package com.android.diet_memo import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.os.Handler import android.util.Log import android.widget.Toast import com.android.diet_memo.databinding.ActivityMainBinding import com.android.diet_memo.databinding.ActivitySplashBinding import com.google.firebase.auth.FirebaseAuth import com.google.firebase.auth.ktx.auth import com.google.firebase.ktx.Firebase import java.lang.Exception class Splash : AppCompatActivity() { private lateinit var binding: ActivitySplashBinding private lateinit var auth: FirebaseAuth override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivitySplashBinding.inflate(layoutInflater) setContentView(binding.root) auth = Firebase.auth try { Log.d("SPLASH", auth.currentUser!!.uid) Toast.makeText(this,"원래 비회원 로그인이 되어있는 사람입니다",Toast.LENGTH_LONG).show() // splash 부분 Handler().postDelayed({ startActivity(Intent(this, MainActivity::class.java)) finish() },3000) // splash 부분(끝) } catch (e: Exception) { Log.d("fxxk", "회원가입 시켜줘야함") //실패하고, 회원가입 시켜줘야하므로 catch 부분에 예외처리를 해주고,익명로그인 창으로 뜨게한다. auth.signInAnonymously() //firebase 익명로그인 하는 코드 시작부분 .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Toast.makeText(this,"비회원 로그인 성공", Toast.LENGTH_LONG).show() // splash 부분 Handler().postDelayed({ startActivity(Intent(this, MainActivity::class.java)) finish() },3000) // splash 부분(끝) } else { // If sign in fails, display a message to the user. Toast.makeText(this,"비회원 로그인 실패", Toast.LENGTH_LONG).show() } } } } }클래스파일 전체입니다
-
미해결[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기
스프링 시큐리티 예외 RestControllerAdvice로 처리
스프링 시큐리티가 던지는 예외는 RestControllerAdvice로 처리하려면 따로 설정을 만져야하는걸로 아는데 강사님 강의에서는 별다른 설정없이 이런식으로 예외처리가 되고있는데 어느 부분때문에 가능한건가요 ? ㅠㅠ혹시 로그인시 서비스단에서 token 생성 처리를 하고있어서 예외처리가 될수있는건가요 ??