35,200원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
섹션 5 - 북마크 탭 만들기부분에 랜더링이 안됩니다
2024-03-23 10:28:11.256 21448-21448 ViewRootIm...nActivity] com.dk.mylivealonelife I ViewPostIme pointer 02024-03-23 10:28:11.275 21448-21448 ViewRootIm...nActivity] com.dk.mylivealonelife I onDisplayChanged oldDisplayState=2 newDisplayState=22024-03-23 10:28:11.388 21448-21448 ViewRootIm...nActivity] com.dk.mylivealonelife I ViewPostIme pointer 12024-03-23 10:28:11.403 21448-21448 WindowOnBackDispatcher com.dk.mylivealonelife W OnBackInvokedCallback is not enabled for the application. Set 'android:enableOnBackInvokedCallback="true"' in the application manifest.2024-03-23 10:28:11.456 21448-21448 BLASTBufferQueue_Java com.dk.mylivealonelife I update, w= 1080 h= 2340 mName = ViewRootImpl@6687397[MainActivity] mNativeObject= 0xb400007915241710 sc.mNativeObject= 0xb4000077b5238810 format= -1 caller= android.view.ViewRootImpl.updateBlastSurfaceIfNeeded:2968 android.view.ViewRootImpl.relayoutWindow:9998 android.view.ViewRootImpl.performTraversals:4056 android.view.ViewRootImpl.doTraversal:3239 android.view.ViewRootImpl$TraversalRunnable.run:11197 android.view.Choreographer$CallbackRecord.run:1650 2024-03-23 10:28:11.456 21448-21448 ViewRootIm...nActivity] com.dk.mylivealonelife I Relayout returned: old=(0,0,1080,2340) new=(0,0,1080,2340) req=(1080,2340)0 dur=1 res=0x0 s={true 0xb400007865290520} ch=false seqId=02024-03-23 10:28:11.460 21448-21509 ViewRootIm...nActivity] com.dk.mylivealonelife I mWNT: t=0xb4000077d52539d0 mBlastBufferQueue=0xb400007915241710 fn= 2 caller= android.view.ViewRootImpl$6.onFrameDraw:5539 android.view.ViewRootImpl$2.onFrameDraw:2103 android.view.ThreadedRenderer$1.onFrameDraw:788 2024-03-23 10:28:11.461 21448-21448 ViewRootIm...nActivity] com.dk.mylivealonelife I registerCallbackForPendingTransactions2024-03-23 10:28:11.511 21448-21778 TrafficStats com.dk.mylivealonelife D tagSocket(108) with statsTag=0xffffffff, statsUid=-12024-03-23 10:28:12.351 21448-21448 BookmarkFragment com.dk.mylivealonelife E DataSnapshot { key = -NtZSdcbSItwNWK2vCbE, value = {bookmarkIsTure=true} }2024-03-23 10:28:12.352 21448-21448 BookmarkFragment com.dk.mylivealonelife E DataSnapshot { key = -NtZSdcg99SS483hV45y, value = {bookmarkIsTure=true} }2024-03-23 10:28:12.352 21448-21448 BookmarkFragment com.dk.mylivealonelife E DataSnapshot { key = -NtZV1bPRolzlfUx3tLj, value = {bookmarkIsTure=true} }2024-03-23 10:28:12.352 21448-21448 BookmarkFragment com.dk.mylivealonelife E DataSnapshot { key = -NtZV1bS1QRxpkI6E6GN, value = {bookmarkIsTure=true} } 이건 로그파일이구요 로그는 찍히는데 화면에 랜더링이 안되네요 이것저것 열심히 찾아봐도 안되서 파일도 같이 첨부합니다.https://drive.google.com/file/d/1VUq5si9BXmxutF1Q1C7E9CzHVVN5sP79/view?usp=sharing
- 해결됨[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
섹션 3 - Navigation 구현 - 1 에서 발생한 에러
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dk.mylivealonelife/com.dk.mylivealonelife.MainActivity}: android.view.InflateException: Binary XML file line #50 in com.dk.mylivealonelife:layout/actvity_main: Binary XML file line #50 in com.dk.mylivealonelife:layout/actvity_main: Error inflating class androidx.fragment.app.FragmentContainerViewCaused by: android.view.InflateException: Binary XML file line #50 in com.dk.mylivealonelife:layout/actvity_main: Binary XML file line #50 in com.dk.mylivealonelife:layout/actvity_main: Error inflating class androidx.fragment.app.FragmentContainerViewCaused by: android.view.InflateException: Binary XML file line #50 in com.dk.mylivealonelife:layout/actvity_main: Error inflating class androidx.fragment.app.FragmentContainerView2024-03-19 09:56:32.052 27206-27206 AndroidRuntime com.dk.mylivealonelife E Caused by: java.lang.UnsupportedOperationException: FragmentContainerView must be within a FragmentActivity to use android:name="androidx.navigation.fragment.NavHostFragment" Navigation 의존성추가한뒤로 mainActivity 접속시 튕기면서 이런 오류가 나옵니다.열심히 구글링 해봤는데 에러 핸들링이 안되네요 ㅠㅠ구글 드라이브 링크 입니다.https://drive.google.com/file/d/133chRQy9tldO-_9C9t4SCg8IB79J8kvw/view?usp=sharing
- 해결됨[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
예제 앱 만들기 - 1 에서 막히는 부분이 있습니다.
FATAL EXCEPTION: main Process: com.dk.myapplication, PID: 3250 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dk.myapplication/com.dk.myapplication.MainActivity}: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.dk.myapplication. Make sure to call FirebaseApp.initializeApp(Context) first. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4164) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4322) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2685) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:230) at android.os.Looper.loop(Looper.java:319) at android.app.ActivityThread.main(ActivityThread.java:8893) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103) Caused by: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.dk.myapplication. Make sure to call FirebaseApp.initializeApp(Context) first. at com.google.firebase.FirebaseApp.getInstance(FirebaseApp.java:179) at com.google.firebase.auth.FirebaseAuth.getInstance(com.google.firebase:firebase-auth@@22.3.1:283) at com.google.firebase.auth.ktx.AuthKt.getAuth(com.google.firebase:firebase-auth@@22.3.1:8) at com.dk.myapplication.MainActivity.onCreate(MainActivity.kt:18) at android.app.Activity.performCreate(Activity.java:8944) at android.app.Activity.performCreate(Activity.java:8913) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1456) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4146) 이런 오류가 나오면서 앱을 강제 종료 시킵니다 ㅠㅠ해당 프로젝트 파일입니다! https://drive.google.com/file/d/1jD3oEdj2VTKqFCg4GyGs-ax2DB28uif7/view?usp=drive_link
- 해결됨[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
리스트뷰에 이미지 업로드
안녕하세요 강의를 다 듣고 추가로 구현하고 싶은것이 있어서 질문 남겨요!게시글을 작성하고 입력버튼을 누르면 원래는 제목,내용,시간 부분만 자취톡부분에 나오게 구현하셨는데아래처럼 이미지까지 추가해서, 게시글을 작성했을때 선택했던 이미지와 똑같은 이미지를 리스트뷰에도 똑같이 표현하고 싶습니다 즉, 게시글을 작성하고 입력버튼을 눌렀을때 나오는 리스트뷰에 내가 작성한 제목,내용,시간뿐만아니라 이미지까지 표현하고 싶습니다! 그래서 제가 구현해본 것이 BoardModel의 데이터모델에 url을 추가해줬고package com.example.mysololife.board data class BoardModel( val title : String = "", val content : String = "", val uid : String = "", val time : String = "", val url : String = "" // 이미지 url ) BoardWriteActivity에서 아래와 같이 url데이터도 일단은 빈값으로 추가해주었습니다// 데이터 집어넣기 FBRef.boardRef .child(key) .setValue(BoardModel(title,content,uid,time,"")) 그리고 BoardListLVAdapter에서 내가 선택한 이미지가 해당레이아웃에 적용되게 아래와 같이 코드를 짜주었습니다// 내가 넣어준 이미지가 imageView에 적용되게 imageView에 선언 val imageView = view?.findViewById<ImageView>(R.id.imageView) // 이미지 보이게 적용 Glide.with(context) .load(boardList[position].url) .into(imageView!!) 그래서 이렇게 코드를 작성하고 파이어베이스를 봤더니 이런 구조로 나왔습니다현재까지는 url부분에 아무것도 없어서 이미지가 뜨지 않지만이 url부분에 파이어베이스 스토리지에 있는 이 이미지url을 복사해서 붙여넣으니깐 리스트뷰에 이미지가 잘 뜨는것을 확인할수있었습니다 그래서 제 생각에는 이 url을 넣는 부분에 파이어베이스에 업로드해논 이미지url을 넣어줘야될것같은데이걸 어떻게 하는지 모르겠습니다....파이어베이스 스토리지 공식문서 (url을 통해 데이터 다운로드) 부분을 참고해도 어느 부분에다가 집어넣어야되는지 감도 안오고 잘 되지 않아서 질문드립니다....// 데이터 집어넣기 FBRef.boardRef .child(key) .setValue(BoardModel(title,content,uid,time,"")) 이미지를 추가하는 코드를 제외하고는 강의에 나온 코드들과 전부 동일합니다!
- 해결됨[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
댓글화면 레이아웃 디자인
안녕하세요 강의를 다 듣고 스스로 프로젝트를 개발하는중에 질문이 생겨서 질문드려요 저 댓글창부분을 android:layout_alignParentBottom="true"을 사용해서 하단에 고정시키려하는데 저 코드를 작성해도 고정이 안되는것같습니다. 리사이클러뷰를 적용하면 댓글창이 하단에 고정이 안되는것같습니다그리고 댓글창을 제외하고 나머지부분을 스크롤뷰로 감싸서 댓글창 빼고 다 스크롤뷰로 스크롤될수있게 적용했는데 오류가 있는지 디자인 미리보기 화면이 아얘 사라져? 버립니다..뭐가 문제인지 한번 봐주실수있을까요? <?xml version="1.0" encoding="utf-8"?> <layout xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="25dp" android:orientation="horizontal"> <ImageView android:id="@+id/backbutton" android:layout_marginStart="30dp" android:layout_width="20dp" android:layout_height="20dp" android:src="@drawable/back_button"/> <ImageView android:layout_width="120dp" android:layout_height="25dp" android:layout_marginStart="100dp" android:src="@drawable/community_name"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="25dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" app:srcCompat="@drawable/circle" /> <TextView android:id="@+id/nickname1" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="4" android:text="닉네임" android:fontFamily="@font/bmjua_ttf" android:textSize="20sp" android:textColor="@color/black" android:gravity="center_vertical"/> <ImageView android:id="@+id/threedot" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:src="@drawable/threedot"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="80dp" android:layout_marginTop="15dp" android:orientation="vertical"> <TextView android:id="@+id/title1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="제목" android:textSize="15sp" android:textStyle="bold" android:textColor="@color/black" android:layout_marginStart="30dp"/> <TextView android:id="@+id/content1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="30dp" android:layout_weight="1" android:text="내용" android:textSize="12sp" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:orientation="horizontal"> <ImageView android:id="@+id/favorate1" android:layout_width="20dp" android:layout_height="20dp" android:layout_weight="1" android:layout_marginStart="30dp" android:src="@drawable/heart1" /> <TextView android:id="@+id/favorateText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:layout_gravity="center_vertical" android:layout_marginStart="5dp" android:textColor="@color/black" android:textSize="15dp" android:text="7" android:fontFamily="@font/bmjua_ttf"/> <ImageView android:id="@+id/comment1" android:layout_width="20dp" android:layout_height="20dp" android:layout_weight="1" android:layout_marginStart="20dp" android:src="@drawable/comment1" /> <TextView android:id="@+id/commentText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:layout_gravity="center_vertical" android:layout_marginStart="5dp" android:textColor="@color/black" android:textSize="15dp" android:text="5" android:fontFamily="@font/bmjua_ttf"/> <TextView android:id="@+id/time1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginStart="220dp" android:layout_gravity="center_vertical" android:fontFamily="@font/bmjua_ttf" android:textSize="10dp" android:text="2024.02.13" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="3dp" android:layout_marginTop="35dp" android:background="@color/bottomgray"/> <androidx.recyclerview.widget.RecyclerView android:id="@+id/commentRV" android:layout_width="match_parent" android:layout_height="680dp" android:layout_marginTop="30dp"/> </ScrollView> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentBottom="true"> <LinearLayout android:layout_width="wrap_content" android:layout_height="60dp" android:layout_alignParentBottom="true" android:layout_marginStart="10dp" android:layout_marginEnd="10dp" android:layout_marginBottom="10dp" android:background="@drawable/button_radius_green_stroke"> <EditText android:id="@+id/commentArea" android:hint="댓글을 작성해주세요" android:layout_marginLeft="10dp" android:layout_width="310dp" android:layout_height="match_parent" android:background="@android:color/transparent"/> <Button android:id="@+id/commentBtn" android:layout_width="60dp" android:layout_height="45dp" android:layout_gravity="center_vertical" android:background="@drawable/button_radius_green" android:fontFamily="@font/bmjua_ttf" android:text="등록" android:textColor="@color/white" android:textSize="15dp" android:layout_marginEnd="8dp" /> </LinearLayout> </RelativeLayout> </LinearLayout> </RelativeLayout> </layout>해당 레이아웃 전체코드입니다
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
xml 파일 디자인 부분
안녕하세요 선생님섹션 4 - 팁 페이지 만들기 - 첫번째 강의(레이아웃 설정 및 아이콘 넣기)를 수강중입니다.제가 중간에 어디 부분을 놓쳐서 이해를 못하고 있는지 잘 모르겠습니다. 4:04 부분에 보이는 꿀팁화면(fragment_tip.xml) 디자인 (안드로이드 스튜디오 우측 그림)에는 상단에 내용 부분(사진 3개)만 있고 지붕 디자인이 없는데애뮬레이터를 실행하는 부분(4:17) 에서는 지붕 디자인(자취생으로 살아남기 글자랑 그림, 우측에 막대기 3개 표시)이 나오는데 윗부분 디자인은 어디서 가지고 오는 건가요?main xml에서 지붕부분을 만든 것은 알겠는데 꿀팁 tip xml 에서는 지붕에 대한 코드가 없습니다 코드상으로는 지붕에 대한 코드가 없는데 애뮬레이터를 실행하면 지붕이 나오게 되는데 왜 그런 것인지 모르겠습니다.아래는 애뮬레이터 실행한 부분입니다.
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
홈화면 커뮤니티화면 부분
안녕하세요! 지금 강의를 다 완료하고 추가하고싶은부분만 추가하는중입니다완성작에 있는 홈화면 커뮤니티부분을 개복치님이 하신것처럼 최근올린 게시물 몇개만(5개정도만) 띄우고싶은데 어떻게하면 될까요??사진에보이는 빨간부분을 구현하고싶습니다.강의는 완전히 똑같이 따라한 상태여서 코드는 강의내용과 똑같습니다! 어떻게하는지 힌트만 주시면 할수있을것같습니다
- 해결됨[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
레이아웃
안녕하세요 수업 잘 듣는중에 궁금한점이 생겨서 질문남겨요바인딩을 시켜줄때 왜 해당 xml파일을 layout으로 전체를 감싸주는지 이유가 궁금합니다
- 해결됨[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
섹션 0: 데이터베이스 리스트 값이 안뜹니다.
안녕하세요!섹션 0 예제 앱 만들기- 4를 보다가 제가 등록한 게시글 내용이 뜨지 않아서 질문 드립니다.코드를 똑같이 작성하였는데(BoardListActivity- getData())abc@abc.com, 12341234 를 입력하고 로그인하면 다음 화면으로 넘어가지 않고 튕깁니다.근데 제가 밑 부분을 주석 치면 당연히 게시글 리스트는 안나오지만 다음 화면으로 넘어가지고// val item= dataModel.getValue(Model::class.java) // list.add(item!!) list.add(Model("a"))list.add(Model("b"))list.add(Model("c")) 를 입력해도 정상적으로 로그인 및 데이터들이 잘 뜹니다.... 왜 작동이 안되는지 알려주시면 감사하겠습니다 ..! (참고로 오류 메시지는 뜨지 않습니다.!) fun getData(){ val database = Firebase.database val myRef = database.getReference("board") val postListener = object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { for (dataModel in dataSnapshot.children){ // val item= dataModel.getValue(Model::class.java) // list.add(item!!) } LVAdaptor.notifyDataSetChanged() } override fun onCancelled(databaseError: DatabaseError) { // Getting Post failed, log a message Log.w("BoardListActivity", "loadPost:onCancelled", databaseError.toException()) } } myRef.addValueEventListener(postListener) }
- 해결됨[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
파이어베이스 프로젝트 생성
제가 예전에 파이어베이스를 활용해서 앱을 만들었어서 파이어베이스 프로젝트가 몇개 있는데 다시 만들려고하니깐 아래 사진과 같이 뜹니다. 상향요청을 해야될까요? 파이어베이스 프로젝트를 4개밖에 안만들었는데도 이렇게 떠요ㅜㅜ
- 해결됨[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
파이어베이스 프로젝트 생성개수
안녕하세요. 학습을 하다 궁금한점이 생겼는데 파이어베이스 프로젝트 생성 개수는 정해져있지 않나요?파이어베이스 프로젝트를 몇개 이상만들면 이제 더이상 생성이 안되는 문제는 없는지 궁금합니다!
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
파이어베이스 회원가입 구현 부분에서 emailArea 와 passwordArea, passwordArea2 이 부분이 빨간색이에요
파이어베이스 회원가입 구현 부분에서 emailArea 와 passwordArea, passwordArea2 이 부분이 빨간색이며 Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing com.android.build.gradle.internal.res.ParseLibraryResourcesTask$ParseResourcesRunnable이런 오류가 나요. ㅜㅜ 그리고 package com.juwon.mysolelife.auth import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Toast import androidx.databinding.DataBindingUtil import com.google.firebase.Firebase import com.google.firebase.auth.FirebaseAuth import com.google.firebase.auth.auth import com.juwon.mysolelife.R import com.juwon.mysolelife.databinding.ActivityIntroBinding class JoinActivity : AppCompatActivity() { private lateinit var auth: FirebaseAuth private lateinit var binding: ActivityIntroBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = DataBindingUtil.setContentView(this, R.layout.activity_join) setContentView(R.layout.activity_join) binding.joinBtn.setOnClickListener { val email = binding.emailArea.text.toString() val password1 = binding.passwordArea.text.toString() val password2 = binding.passwordArea2.text.toString() if(email.isEmpty()) { Toast.makeText(this, "이메일을 입력 해 주세요", Toast.LENGTH_LONG).show() } } auth = Firebase.auth // auth.createUserWithEmailAndPassword(email, password) auth.createUserWithEmailAndPassword("sjw9179@kakao.com", "tlswndnjs1!") .addOnCompleteListener(this) { task -> if (task.isSuccessful) { Toast.makeText(this, "성공", Toast.LENGTH_LONG).show() } else { Toast.makeText(this, "실패", Toast.LENGTH_LONG).show() } } } }이런식으로 코드가 짜여있습니다.
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
파이어베이스 SDK 구정이 또 달라져서 보라고 주신 문서들에도 안 나와있습니다.
파이어베이스 SDK 구정이 또 달라져서 보라고 주신 문서들에도 안 나와있습니다.
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
FireBase 로드와 파일 경로 관련 질문
여기서 강의 '예제앱 만들기 1' 에서 res > layout 파일에서 xml 파일이 있어야 하는데 layaout 파일이 없어요.그리고 그 오른쪽 상단에 스타트 버튼도 비활성화 되어있는데 이것도 왜 그런지 모르겠어요.그리고plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("com.google.gms.google-services") } android { namespace = "com.example.myfirebaseapp" compileSdk = 33 defaultConfig { applicationId = "com.example.myfirebaseapp" minSdk = 24 targetSdk = 33 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { useSupportLibrary = true } } buildTypes { release { isMinifyEnabled = 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" } buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.4.3" } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" } } } dependencies { implementation("androidx.core:core-ktx:1.9.0") implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") implementation("androidx.activity:activity-compose:1.7.0") implementation(platform("androidx.compose:compose-bom:2023.03.00")) implementation("androidx.compose.ui:ui") implementation("androidx.compose.ui:ui-graphics") implementation("androidx.compose.ui:ui-tooling-preview") implementation("androidx.compose.material3:material3") 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:2023.03.00")) androidTestImplementation("androidx.compose.ui:ui-test-junit4") debugImplementation("androidx.compose.ui:ui-tooling") debugImplementation("androidx.compose.ui:ui-test-manifest") implementation(platform("com.google.firebase:firebase-bom:32.7.0")) implementation("com.google.firebase:firebase-analytics") }Firebase 로드가 조금 많이 바뀐거 같은데요, build.gradle.kts (module :app) 이 파일에 이런식으로 로드 하는게 맞나요..?
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
실시간데이터베이스에 안떠요..6:15초
6분15초에서 하는 list를 누르면 파이어베이스에 뭔가 생기는데 저는 안생겨요..이렇게 생기지 않습니다.....package com.bokchi.mysolelife.contentsList import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.View import android.widget.Toast import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.bokchi.mysolelife.R import com.google.firebase.Firebase import com.google.firebase.database.database class ContentListActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_content_list) val database = Firebase.database val myRef = database.getReference("message") myRef.setValue("Hello, World!") val rv : RecyclerView = findViewById(R.id.rv) val items = ArrayList<ContentModel>() items.add(ContentModel("title1", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblYPPY%2Fbtq66v0S4wu%2FRmuhpkXUO4FOcrlOmVG4G1%2Fimg.png", "https://philosopher-chan.tistory.com/1235")) items.add(ContentModel("title2", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FznKK4%2Fbtq665AUWem%2FRUawPn5Wwb4cQ8BetEwN40%2Fimg.png", "https://philosopher-chan.tistory.com/1236")) items.add(ContentModel("title3", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbtig9C%2Fbtq65UGxyWI%2FPRBIGUKJ4rjMkI7KTGrxtK%2Fimg.png","https://philosopher-chan.tistory.com/1237")) items.add(ContentModel("title4", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOYyBM%2Fbtq67Or43WW%2F17lZ3tKajnNwGPSCLtfnE1%2Fimg.png", "https://philosopher-chan.tistory.com/1238")) items.add(ContentModel("title5", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fekn5wI%2Fbtq66UlN4bC%2F8NEzlyot7HT4PcjbdYAINk%2Fimg.png", "https://philosopher-chan.tistory.com/1239")) items.add(ContentModel("title6", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F123LP%2Fbtq65qy4hAd%2F6dgpC13wgrdsnHigepoVT1%2Fimg.png", "https://philosopher-chan.tistory.com/1240")) items.add(ContentModel("title7", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl2KC3%2Fbtq64lkUJIN%2FeSwUPyQOddzcj6OAkPKZuk%2Fimg.png", "https://philosopher-chan.tistory.com/1241")) items.add(ContentModel("title8", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmBh5u%2Fbtq651yYxop%2FX3idRXeJ0VQEoT1d6Hln30%2Fimg.png", "https://philosopher-chan.tistory.com/1242")) items.add(ContentModel("title9", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlOnja%2Fbtq69Tmp7X4%2FoUvdIEteFbq4Z0ZtgCd4p0%2Fimg.png", "https://philosopher-chan.tistory.com/1243")) items.add(ContentModel("title10", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNNrYR%2Fbtq64wsW5VN%2FqIaAsfmFtcvh4Bketug9m0%2Fimg.png", "https://philosopher-chan.tistory.com/1244")) items.add(ContentModel("title11", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FK917N%2Fbtq64SP5gxj%2FNzsfNAykamW7qv1hdusp1K%2Fimg.png", "https://philosopher-chan.tistory.com/1245")) items.add(ContentModel("title12", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeEO4sy%2Fbtq69SgK8L3%2FttCUxYHx9aPNebNwkPcI21%2Fimg.png", "https://philosopher-chan.tistory.com/1246")) items.add(ContentModel("title13", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdIKDG%2Fbtq64M96JFa%2FKcJiYgKuwKuP3fIyviXm90%2Fimg.png", "https://philosopher-chan.tistory.com/1247")) items.add(ContentModel("title14", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFtY3t%2Fbtq65q6P4Zr%2FWe64GM8KzHAlGE3xQ2nDjk%2Fimg.png", "https://philosopher-chan.tistory.com/1249")) items.add(ContentModel("title15", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOtaMq%2Fbtq67OMpk4W%2FH1cd0mda3n2wNWgVL9Dqy0%2Fimg.png", "https://philosopher-chan.tistory.com/1250")) val rvAdapter = ContentRVAdapter(baseContext, items) rv.adapter = rvAdapter rv.layoutManager = GridLayoutManager(this, 2) rvAdapter.itemClick = object : ContentRVAdapter.ItemClick { override fun onClick(view: View, position: Int) { Toast.makeText(baseContext, items[position].title, Toast.LENGTH_LONG).show() val intent = Intent(this@ContentListActivity, ContentShowActivity::class.java) intent.putExtra("url", items[position].webUrl) startActivity(intent) } } } }메세지 나야되는거 적었습니다...그런데도 안떠요
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
rv이 할때 에러가...
package com.bokchi.mysolelife.contentsList import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.recyclerview.widget.RecyclerView import com.bokchi.mysolelife.R class ContentListActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_content_list) val rv : RecyclerView = findViewById(R.id.rv) //여기 R.id.rv이 할때 rv가 에러가 나요 val items = ArrayList<String>() items.add("a") items.add("b") items.add("c") val rvAdapter = ContentRVAdapter(items) rv.adapter = rvAdapter } }왜 에러가 나는걸까요?
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
emailArea가 안나와요..
package com.bokchi.mysolelife.auth import android.database.DatabaseUtils import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Toast import androidx.databinding.DataBindingUtil import com.bokchi.mysolelife.R import com.bokchi.mysolelife.databinding.ActivityIntroBinding import com.google.firebase.Firebase import com.google.firebase.auth.FirebaseAuth import com.google.firebase.auth.auth class JoinActivity : AppCompatActivity() { private lateinit var binding: ActivityIntroBinding private lateinit var auth: FirebaseAuth override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) auth = Firebase.auth binding = DataBindingUtil.setContentView(this, R.layout.activity_join) binding.joinBtn.setOnClickListener { val email = binding.emailArea } // auth.createUserWithEmailAndPassword("abc@abc.com", "12341234") // .addOnCompleteListener(this) { task -> // if (task.isSuccessful) { // Toast.makeText(this, "성공", Toast.LENGTH_LONG).show() // } else { // Toast.makeText(this, "실패", Toast.LENGTH_LONG).show() // } // } } }여기 보면 선생님과 똑같이 했는데 emailArea을 이제 칠때 빨간색으로 뜨면서 안되요...<?xml version="1.0" encoding="utf-8"?> <layout> <LinearLayout 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:layout_width="match_parent" android:layout_height="match_parent" tools:context=".auth.JoinActivity" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:background="@color/mainColor" android:layout_height="150dp"> <TextView android:text="회원가입" android:gravity="center" android:textStyle="bold" android:textColor="@color/black" android:textSize="20sp" android:layout_width="match_parent" android:layout_height="50dp"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:orientation="vertical"> <EditText android:id="@+id/emailArea" android:layout_width="match_parent" android:layout_height="50dp" android:hint="email" style="@style/AuthEditText"/> <LinearLayout android:layout_width="match_parent" android:background="#999999" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_height="0.5dp"/> <EditText android:id="@+id/passwordArea" android:layout_width="match_parent" android:layout_height="50dp" android:inputType="textPassword" android:hint="password" style="@style/AuthEditText"/> <LinearLayout android:layout_width="match_parent" android:background="#999999" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_height="0.5dp"/> <EditText android:id="@+id/passwordArea2" android:layout_width="match_parent" android:layout_height="50dp" android:inputType="textPassword" android:hint="password check" style="@style/AuthEditText"/> <LinearLayout android:layout_width="match_parent" android:background="#999999" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_height="0.5dp"/> <Button android:id="@+id/joinBtn" android:layout_margin="20dp" android:background="@drawable/background_radius_yellow" android:text="회원가입하기" android:layout_width="match_parent" android:layout_height="50dp"/> </LinearLayout> </LinearLayout> </layout> 여기 ID emailArea 적어져 있습니다 그런데 왜(?) 이런 오류가 뜨는 것일가요?? 알려주세요...ㅠㅠ
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
실행하면 바로 앱이 안떠요..
이제 처음 선생님도 앱을 실행했을때 ok라고 뜨 잖아요 그런데 저는 실행도 안되요...그래서 다시 처음부터 했는데 되지 않아요.......ㅠㅠ
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
게시글/댓글 작성 후 리스트뷰에 즉시 반영이 안됩니다
안녕하세요 강사님좋은 강의 제공해주셔서 감사합니다.제목 그대로의 문제가 있어서 질문 남깁니다.BoardWrite액티비티에서 게시글 작성 후 등록 버튼을 누르고 finish()를 통해 프래그먼트로 빠져나오는 경우,그리고 BoardInside액티비티에서 댓글을 등록한 경우리스트뷰에 결과가 즉시 반영되지 않는 것 같습니다.다른 액티비티 혹은 프래그먼트로 이동 후 돌아오면 반영되긴 하지만요...강사님 영상을 보니 게시글/댓글 모두 리스트뷰에 즉시 반영되는 것 같은데...아, 차이점이 있다면 저는 binding을 쓰지 않았습니다. 혹시 이 탓일까요?
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
RecyclerView 생성 관련 질문 있습니다.
RecyclerView 를 만들어 , 아이템목록을 HomeFragment 화면에 띄우게 하려면, 어떻게 해야할까요? HomeFragment.xml에 recyclerview 를 추가하고 , ContentListActivity의 내용을 HomeFragment에 옮기고 , Adapter 연결또한 HomeFragment 와 연결해주면 가능한가요? 직접 해보니 잘 안돼서 질문드립니다.