inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

연령 및 광고 차단 문의

해결됨

350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법

안녕하세요, 선생님. 강의 잘 듣고 있습니다. 앱 연령 등급이 크게 문제가 되지 않는다면, 전체 연령으로 설정해도 괜찮을지 궁금합니다. 글로벌 출시 앱의 경우 COPPA와 GDPR을 준수해야 하는 것으로 알고 있는데, AdMob > 차단 관리 > 광고 콘텐츠 등급 / 민감한 카테고리 설정은 어떤 기준으로 설정하는 것이 적절할까요? 제가 여러모로 조심스러운 편이라 걱정이 많습니다. 광고를 차단하니 초기에 광고가 너무 안나오는 문제가 있는거같네요. 혹시 이 내용이 강의 중에 다뤄졌다면, 제가 놓쳤을 수도 있으니 해당 파트를 알려주시면 감사하겠습니다. 감사합니다.

  • android
  • Google-Ads
  • admob
  • 수익화
파이팅 댓글 1 좋아요 0 조회수 118

초기 광고 세팅시 캠페인/광고그룹 개수

해결됨

350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법

안녕하세요! 강의 두 번째 복습 중 궁금한 점이 생겼습니다. 광고 실험 시 여러 개의 광고 그룹·캠페인을 만든다고 하셨는데, 이는 초기 광고 단계에서도 동일하게 적용되는 방법 인가요? 초기 광고는 소액(일 2,000~5,000원) 으로 세팅한다고 하셨는데, 이 예산 안에서 여러 광고 그룹·캠페인을 동시에 운영할 수 있는지 궁금합니다. (5,000원을 쪼개서 2~3개의 캠페인을 돌리시는지? 아니면 안정성이 확보되고 예산을 늘릴 때 캠페인도 같이 늘리시는지..?)

  • android
  • Google-Ads
  • admob
  • 수익화
benedict 댓글 2 좋아요 0 조회수 116

구글 개발자 계정에 대해 질문드립니다.

해결됨

350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법

안녕하세요. 이번에 개발자 계정을 만들고 나서 질문을 드립니다. 전에, 가장 좋은 방법은 법인 사업자를 개설하여 조직계정으로 운영하는 것 조직 계정 운영시 14인 테스트 X, 인앱/구독 결제 수익 받을때 지장 X 개인 사업자를 조직 계정으로 운영하는 것 조직 계정 운영시 14인 테스트 X, 인앱/구독 결제 수익 받을때 지장 O 애드몹 수익은 Google Play랑 독립된 서비스라 가능할것으로 보임 사업자 개설이 불가능한 상황이라면 개인 계정으로 개설 후 운영 14일 테스트 진행 필요 / 인앱/구독 결제 수익 받을때 지장 X 순이 될 것 같습니다. 하지만 하나의 대안으로 활용할 수 있을 법한게 개인 사업자를 조직 계정으로 개설하여 서비스를 14일 테스트를 회피하여 출시한 뒤 > 출시가 완료되면 개인 계정으로 이전하게 되면 테스트는 피할 수 있으면서 인앱/구독 수익을 받을때도 지장이 없어지기 때문에 하나의 대안이 될 수 있을것 같습니다. 이렇게 알려주신 글을 봤습니다. 근데 다른 글에서는 개인사업자를 내더라도, 구글플레이 개인으로 해야 수익정산에 문제가 없다는 글을 봤는데, 지금이라도 조직으로 하는게 맞는건지 궁금해서 질문글을 올립니다.

  • android
  • Google-Ads
  • admob
  • 수익화
hollla03 댓글 2 좋아요 0 조회수 750

30 강 소스 좀 올려 주십시요

미해결

[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)

선생님 명언리스트 페이지 제작 - ListView 소스 좀 올려 주십시요. 어떤 곳이 잘못되었는지 비교하고 싶습니다.

  • android
  • kotlin
  • firebase
후다닥 댓글 2 좋아요 0 조회수 112

onBackPressed 함수가 동영상 하고 다르게 동작합니다.

미해결

[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)

선생님 안녕하세요. 아래 함수만 추가 하고 back버튼을 클릭 한번만 해도 오류 없이 자동으로 앱이 종료 됩니다. 로그도 다르게 나옵니다. 전체 소스 공유 드립니다. https://drive.google.com/file/d/1pywWeGHuAAZb0a0nC1IZZdje1wLZxlLv/view?usp=sharing override fun onBackPressed()

  • android
  • kotlin
  • firebase
후다닥 댓글 2 좋아요 0 조회수 134

ListView 초기 실행 안됩니다.

미해결

[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)

강의대로 실행하면 검은 앱 화면만 나옵니다. 몇번을 반복해서 타이핑해도 같은 증상이 나옵니다. 현재 저는 아래 버전 입니다. Android Studio Otter 2 Feature Drop | 2025.2.2 Patch 1 Build #AI-252.27397.103.2522.14617522, built on December 19, 2025 Runtime version: 21.0.8+-14196175-b1038.72 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. Toolkit: sun.awt.windows .WToolkit Windows 11.0 GC: G1 Young Generation, G1 Concurrent GC, G1 Old Generation Memory: 2048M Cores: 8 Registry: ide.experimental.ui=true Non-Bundled Plugins: com.levinzonr.arch.jetpackcompose.plugin (1.6.0) Dart (500.0.0) io.flutter (88.2.0) 동영상이 너무 낮고, 등록된 소스하고도 차이가 나서 비교하면서 하기가 참 어렵네요 ㅜ..ㅜ 미묘하게 다른게 있는것 같은데 기초를 따라하기가 어려워요. --activity_main.xml <?xml version="1.0" encoding="utf-8"?> <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"> <ListView android:id="@+id/mainListview" android:layout_width="match_parent" android:layout_height="match_parent" /> </androidx.constraintlayout.widget.ConstraintLayout> --ListViewAdapter.kt package com.chpang.listview_exp import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.BaseAdapter class ListViewAdapter(val List: MutableList<String>) : 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 converView =convertView if (converView==null) { converView = LayoutInflater.from(parent?.context).inflate(R.layout.listview_item, parent, false) } return converView!! } } --listveiw_item.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" http://schemas.android.com/apk/res/android " android:layout_width="match_parent" android:layout_height="80dp"> <TextView android:id="@+id/listviewItem" android:textSize="30sp" android:layout_margin="5dp" android:text="리스트뷰 아이템" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> --MainActivity.kt package com.chpang.listview_exp import android.os.Bundle import android.widget.ListView import androidx.activity.enableEdgeToEdge import androidx.appcompat.app .AppCompatActivity import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val list_item = mutableListOf<String>() list_item.add("A") list_item.add("B") list_item.add("C") val listview =findViewById<ListView>( R.id .mainListview) val listAdapter = ListViewAdapter(list_item) listview.adapter = listAdapter } }

  • android
  • kotlin
  • firebase
후다닥 댓글 2 좋아요 0 조회수 129

그래프 그리기 위한 API가 프리미엄 요금제를 구독해야만 가능하다고 합니다...ㅜㅜ

미해결

Flutter 중급 2편 - 실전 앱 개발 - 미국 주식 앱 (with 클린 아키텍처)

{ "Information": "Thank you for using Alpha Vantage! This is a premium endpoint. You may subscribe to any of the premium plans at https://www.alphavantage.co/premium/ to instantly unlock all premium endpoints" } 선생님, 그래프 그리기 위한 API가 프리미엄 요금제를 구독해야만 가능하다고 하는데 어떻게 하면 좋을까요? ㅜㅜ

  • flutter
  • ios
  • android
류지영 댓글 2 좋아요 0 조회수 116

앱 삭제 관련 문의드립니다.

해결됨

350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법

안녕하세요! 먼저 너무도 알찬 강의 제공해주신 것에 대해 감사의 말씀드립니다. 다름이 아니라 혹시 구글 플레이 콘솔에 등록되어 있는 앱을 삭제해도 문제 없는지 궁금합니다. 예전에는 스토어에서 내리는 것만 가능했던 것으로 기억하는데 최근에 확인해보니 삭제 기능이 추가되었더군요. 그런데 앱삭제로 인한 계정에 대한 페널티 같은게 있을까봐 삭제는 진행하지 못하고 있어 문의드립니다. 추가로 오래된 앱들의 경우 이미 스토어에서 내린 상황에서도 갑자기 정책위반 알림이 뜨곤 하던데 수많은 앱들을 관리하는 선생님께서는 어떻게 대응하시는지 스토어에서 내렸으면 정책위반을 해결하지 않고 방치해도 되는지 궁금합니다. 답변주시면 정말 감사하겠습니다.

  • android
  • 수익화
비틀거리는괴발자 댓글 2 좋아요 0 조회수 128

과거 ai없을때 듣고 다시 듣는 중인데

미해결

Flutter 입문 - 안드로이드, iOS 개발을 한 번에 (with Firebase)

허허 돌겟.. 에이전트 붙여서 강의 따라가니깐 금방금방이네요 게다가 주석으로 설명까지.. 크...

  • flutter
  • ios
  • android
댓글 1 좋아요 1 조회수 75

구글애즈 사용하실 때, 광고비용 측정을 다양하게 하시나요 ?

해결됨

350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법

저는 지금, 비용이 어떻게 나올지 궁금하여 , 설치당으로 하다가, 이번에 인앱액션을 걸었는데, 선생님은 여러가지 다 사용해서 하시나요 ? 혹시 꼭 사용하시거나 , 아니면 이런게 좋다 이런게 있을까요 ?

  • android
  • Google-Ads
  • admob
  • 수익화
고노도로 댓글 2 좋아요 0 조회수 151

제가 오늘 첫 구글ads캠페인을 올려봤씁니다!

해결됨

350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법

이렇게 나왔는데, 타겟 CPA를 너무 높게잡은걸까요 ? 그리고, 지금 저의경우 앱실행시 스플래시-> 전면광고 이렇게 진행되는데 이렇게 진행해서 그런지 설치는 꽤 하셨는데 , 로그인한 유저분들이 별로 없더라고요 ,,, 이런경우 어떻게 하면 좋을지 조언해주실 수 있을까요 ? 어려운 부분이라면 괜찮습니다 , 감사합니다!!

  • android
  • Google-Ads
  • admob
  • 수익화
고노도로 댓글 2 좋아요 0 조회수 136

앱개발 도중 문제에 대한 조언을 구합니다.

해결됨

350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법

학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 마크다운, 단축키를 이용해서 편리하게 글을 작성할 수 있어요. 먼저 유사한 질문이 있었는지 검색해보세요. 서로 예의를 지키며 존중하는 문화를 만들어가요. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 올초에 블로그에서 글을 보고 이후 강의 완료후 지금 까지 실천하고 있는 개발자 입니다. 중간중간 문제가 많이 있었는데 관련 문제 및 조언 요청 드립니다. 1. 현재 개발한 앱은 18개 정도 입니다. 광고 비용 최적화를 진행 하였으나 광고 비용보다 수익이 넘어선거는 최근 1개월 정도 입니다. 앱의 갯수가 더많아질경우 광고를 전체 앱에 진행하기 어려울텐데 광고를 계속 진행하는 여부는 어떻게 판단하시는지 굼긍합니다. 2. 계정을 여러개 사용하신 것으로 알고 있는데 저는 운좋게 이전에 만들어 놓은 계정이 한개 있어서 이계정의 경우 사전 심사 없이 앱을 여러개 출시 할수 있습니다. 하지만 앱이 많아지면서 관리 문제나 애드몹 제재 문제로 인하여 계정을 여러개 필요로 하는 상황이 점점 많아지는데 현상황에서 이를 해결할 방법이 있을까요? 3. 근원적인 문제인데 애드몹의 제재를 올해를 보내면서 광고 제재 6회이상 광고중단 2회 정도 받으면서 사실 굉장히 힘들었습니다. 중간에 유니티나 기타 다른 플랫폼으로 옮겼지만 광고 수익이 미미하였고 이문제 때문에 애드몹 계정을 앱별로 나누어 사용해도 될지 궁금합니다. 애드몹 계정을 여러개 사용하면 계정 삭제 또는 큰 처벌을 받을수 있다는 이야기만 있어서 이에 대한 조언 부탁드립니다. 4. 현재 20여개의 앱중에 3~4개만이 유의미한 수익이 나오고 있습니다. 현재 일평균 앱4~5개누적 수익이 겨우 1.8 ~2달러 정도 입니다. 특정 기간에는 3~4달러 정도 나오지만 아무래도 앱의 특성상 광고를 통한 신규 유저들을 통한 수익이어서 오가닉 유입은 약한 것으로 보입니다. 혹시 이정도의 수익인 앱이지만 꾸준히 가져 가는게 맞는 것인지 초반에는 앱을 유지 하는 기준을 수익의 어느 정도 또는 기간동안 어느 정도의 유저 반응을 보고 판단하는지 궁금합니다. .. 중복질문이 되었네요 주말 잘보내시고 조언 및 답변 부탁드립니다. 감사합니다.

  • android
  • Google-Ads
  • admob
  • 수익화
PUMDA 댓글 2 좋아요 0 조회수 132

섹션 10 바이브 코딩 강의 출시일

해결됨

350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법

안녕하세요! 섹션 10 바이브 코딩 부분이 추후공개로 생겼는데 혹시 언제쯤 강의를 볼 수 있을지요? 너무너무 기대됩니다!ㅎㅎ

  • android
  • Google-Ads
  • admob
  • 수익화
JH 댓글 1 좋아요 0 조회수 133

코딩을 완료하고난후 앱 실행시 자동 종료

미해결

[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)

스마트폰에 앱까지 설치가 다 되었습니다. 근데 앱을 켜면 자동으로 실행 종료가 됩니다. 뭐가 문제 일까요? ㅠㅠ

  • android
  • kotlin
  • firebase
heasolpapa1222 댓글 2 좋아요 0 조회수 105

ViewModel 사용 관련 질문

미해결

모던 안드로이드 - Jetpack Compose 입문

안녕하세요, 비만도 계산기 강의를 수강하면서 코드를 작성하고 말씀하신 내용들을 학습했는데요. "bmi state를 통해 bmi값이 변경되면 설정한 콜백이 동작하며 결과화면이 recomposition되고, 네비게이션 컨트롤러로 해당 화면으로 이동한다" 라고 이해했는데요, navController.navigate("result") 가 수행되면 composable(route = Screen.Result.route) { ResultScreen( bmi = viewModel.bmi.value, onBackClick = { navController.popBackStack() } ) } 부분이 실행되기 때문에 bmi가 State가 아니고 지역변수여도 원하는 화면이 나올것이라고 생각해서 코드를 변경했는데 실제로 기존과 동일하게 잘 동작하는것을 확인하였습니다. 본 강의에서는 지역변수를 활용해서도 동작이 되지만, UI와 로직을 분리하는 장점이 있으며 ViewModel이 많이 사용되니 사용하신것으로 이해하면 될까요? 아래는 지역변수로 변경한 코드입니다 package com.example.obesitymachine import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.Image import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column 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.layout.size import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.Button import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon 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.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import kotlin.math.pow sealed class Screen(val route: String) { data object Home : Screen("home") data object Result: Screen("result") } class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { val navController = rememberNavController() var bmi = 0.0 NavHost(navController = navController, startDestination = Screen.Home.route) { composable(route = Screen.Home.route) { HomeScreen( onResultClick = {height, weight -> bmi = bmiCalculate(height, weight) navController.navigate(Screen.Result.route) } ) } composable(route = Screen.Result.route) { ResultScreen( bmi = bmi, onBackClick = { navController.popBackStack() } ) } } } } } @OptIn(ExperimentalMaterial3Api::class) @Composable fun HomeScreen( modifier: Modifier = Modifier, onResultClick: (height: Double, weight: Double) -> Unit ) { val (height, setHeight) = rememberSaveable { mutableStateOf("") } val (weight, setWeight) = rememberSaveable { mutableStateOf("") } Scaffold( topBar = { TopAppBar( title = { Text("비만도 측정기") } ) } ) { Box( modifier.padding(it) ) { Column( modifier .fillMaxSize() .padding(8.dp) ) { OutlinedTextField( value = height, onValueChange = setHeight, label = { Text("키") }, keyboardOptions = KeyboardOptions( keyboardType = KeyboardType.Number ), modifier = Modifier.fillMaxWidth() ) OutlinedTextField( value = weight, onValueChange = setWeight, label = { Text("몸무게") }, keyboardOptions = KeyboardOptions( keyboardType = KeyboardType.Number ), modifier = Modifier.fillMaxWidth() ) Button( modifier = Modifier.align(Alignment.End), onClick = { onResultClick(height.toDouble(), weight.toDouble()) } ) { Text("결과") } } } } } @OptIn(ExperimentalMaterial3Api::class) @Composable fun ResultScreen( bmi: Double, onBackClick: () -> Unit ) { val text = when { bmi > 25 -> "과체중" bmi > 18.5 -> "정상" else -> "저체중" } val icon = when { bmi > 25 -> R.drawable.baseline_sentiment_very_dissatisfied_24 bmi > 18.5 -> R.drawable.baseline_sentiment_satisfied_24 else -> R.drawable.baseline_sentiment_dissatisfied_24 } Scaffold( topBar = { TopAppBar( title = { Text("비만도 측정기") }, navigationIcon = { Icon( imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = null, modifier = Modifier.clickable(onClick = onBackClick) ) } ) } ) { Box( modifier = Modifier.padding(it) ) { Column( modifier = Modifier .fillMaxSize(), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { Text(text, fontSize = 30.sp) Spacer(modifier = Modifier.height(50.dp)) Image( painter = painterResource(id = icon), contentDescription = null, modifier = Modifier.size(100.dp), colorFilter = ColorFilter.tint( color = Color.Black ) ) } } } } fun bmiCalculate( height: Double, weight: Double ): Double { return weight / (height / 100).pow(2.0) } 감사합니다!

  • android
  • kotlin
  • jetpack
twahn 댓글 1 좋아요 0 조회수 111

datavinding에서 오류가 납니다.

미해결

[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)

사진처럼 binding = 할때 빨간색이 사라지지 않습니다. 에러가 나는거 같은데 뭐가 문제가 될까요? 2번 사진에서 혹시 뭐 클릭해야하는게 있을까요?

  • android
  • kotlin
  • firebase
heasolpapa1222 댓글 1 좋아요 0 조회수 78

dataBinding 시 오류

해결됨

[중급편] 친절한 JETPACK 개론 <상> (Android Kotlin)

안녕하세요? dataBinding 강의를 듣고 실습 중 지금의 대목에서 계속 오류가 납니다. 안드로이드 버전 문제인지 어떤지 잘 모르겠습니다. 일단 구글 드라이브에 해당 파일을 올려 보았습니다. https://drive.google.com/file/d/1pVyzoFYj5apFNWuMUjtBqGEtG_p_wEaP/view?usp=sharing 살펴보시고, 말씀 주시면 감사하겠습니다. 해당 오류 메시지의 첫 부분은 다음과 같습니다: Execution failed for task ':app:compileDebugKotlin'. > A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction > Internal compiler error. See log for more details Try: > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org . Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:compileDebugKotlin'. at

  • android
  • kotlin
  • jetpack
Keys 댓글 2 좋아요 0 조회수 100

안드로이드 스튜디오 버전 차이로 초기 empyt activity 선택하면 안됩니다.

미해결

[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)

안녕하세요. 안드로이드 스튜디오 버전(Android Studio Otter 2 Feature Drop | 2025.2.2)에서는 empty activity를 선택하면 layout 없어서 activity_main.xml 즉 UI를 설정 파일 없습니다. empty views activity를 선택해야 합니다. 동영상을 수정하셔야 수강생들이 혼동이 없습니다.

  • android
  • kotlin
  • firebase
후다닥 댓글 2 좋아요 0 조회수 188

개발환경은 어떻게 구성하시나요?

해결됨

350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법

안드로이드 개발시에 , adb또는 단말기연결을 해서 앱을 테스트해보아야 하는거로 알고있습니다. 혹시 프좀님께서 개발시에 사용하는 환경을 알 수 있을까요 ? 테스트용 단말기를 따로 보유하고계신가요 ?

  • android
  • Google-Ads
  • admob
  • 수익화
고노도로 댓글 2 좋아요 0 조회수 127

onTabFavorite 콜백 관련 질문

미해결

모던 안드로이드 - Jetpack Compose 입문

안녕하세요, 강의에 구성하신 콜백 메서드 대신 아무 파라미터도 받지 않고 부모에서 정의한 isFavorite을 바꿔주는 형태로 콜백을 구성해도 되는것인지 궁금합니다. class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { MyApplicationTheme { Scaffold { innerPadding -> Box( modifier = Modifier .padding(innerPadding) .fillMaxSize() ) { var isFavorite by rememberSaveable { mutableStateOf(true) } ImageCard( modifier = Modifier .fillMaxWidth(0.5f) .padding(16.dp), isFavorite ) { isFavorite = !isFavorite } } } } } } } @Composable fun ImageCard( modifier: Modifier = Modifier, isFavorite: Boolean, onTabFavorite: () -> Unit, ) { Card( shape = RoundedCornerShape(8.dp), elevation = CardDefaults.cardElevation(5.dp), ) { Box( modifier = Modifier.height(200.dp) ) { Image( painter = painterResource(R.drawable.moon), contentDescription = "cute", contentScale = ContentScale.Crop, ) Box( modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.TopEnd ) { IconButton( onClick = onTabFavorite, ) { Icon( imageVector = if (isFavorite) Icons.Default.Favorite else Icons.Default.FavoriteBorder, contentDescription = "favorite", tint = Color.White, ) } } } } } 감사합니다!

  • android
  • kotlin
  • jetpack
twahn 댓글 2 좋아요 0 조회수 84

인기 태그

인프런 TOP Writers

주간 인기글