무료
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결하울의 안드로이드 인스타그램 클론 만들기
1강 AndroidManifest.xml 코드 오류
com.howl.howlstagram_f16.LoginActivity라는 클래스를 찾을 수 없다고 뜨는데 해당 클래스를 불러오기 위한 다른 방법이 있을까요..? 영상과 다르게 한 부분이 없는데 이 부분에서 오류가 나 해결하는 것 좀 도와주시면 감사하겠습니다
- 미해결하울의 안드로이드 인스타그램 클론 만들기
도와주세요 ㅠㅠ
이런 오류가 생겼는데 막막합니다..ㅠㅠ 도와주세요
- 해결됨하울의 안드로이드 인스타그램 클론 만들기
게시물이 뜨지 않습니다.(detail_veiw)
안녕하세요게시물 업로드하기 부분을 기반으로 fragment 명 정도만 살짝씩 수정하며 따라하다가 오류가 생겨 문의 남깁니다. 정확히는 코드 자체에 오류는 없는데 홈화면에 게시물이 뜨지 않습니다. 파이어베이스에 데이터들이 업로드 되어 있는 것을 확인하였습니다.xml id등도 동일하고요 코드 자체를 잘못 타이핑했는지, 혹은 안드로이드 스튜디오 등의 업데이트가 진행되면서 오류가 생긴 건지 궁금합니다. -xml view id를 인식하지 못해 findViewByID로 인식하도록 코드를 수정했습니다.package com.example.guru26 import android.os.Bundle import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.google.firebase.firestore.FirebaseFirestore import java.util.* import com.bumptech.glide.Glide class HomeFragment : Fragment() { var firestore : FirebaseFirestore? = null override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { // Inflate the layout for this fragment var view = LayoutInflater.from(activity).inflate(R.layout.fragment_home, container, false) firestore = FirebaseFirestore.getInstance() view.findViewById<RecyclerView>(R.id.rv_poster).adapter = PosterAdapter() view.findViewById<RecyclerView>(R.id.rv_poster).layoutManager = LinearLayoutManager(activity) return view } inner class PosterAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() { var contentDTOs : ArrayList<ContentDTO > = arrayListOf() private var contentUidList :ArrayList<String> = arrayListOf() init { firestore?.collection("images")?.orderBy("timestamp")?.addSnapshotListener { querySnapshot, FirebaseFirestoreException -> contentDTOs.clear() contentUidList.clear() for(snapshot in querySnapshot!!.documents){ var item = snapshot. toObject(ContentDTO::class.java) contentDTOs.add(item!!) contentUidList.add(snapshot.id) } notifyDataSetChanged() } } override fun onCreateViewHolder(p0: ViewGroup, p1: Int): RecyclerView.ViewHolder { val view = LayoutInflater.from(p0.context).inflate(R.layout.list_item, p0, false) return CustomViewHolder(view) } inner class CustomViewHolder (view : View) : RecyclerView.ViewHolder(view){} override fun getItemCount(): Int { return contentDTOs.size } override fun onBindViewHolder(p0: RecyclerView.ViewHolder, p1: Int) { var viewholder = (p0 as CustomViewHolder).itemView //UserID viewholder.findViewById<TextView>(R.id.tv_name).text= contentDTOs!![p1].exhName viewholder.findViewById<TextView>(R.id.tv_start_date).text= contentDTOs!![p1].exhStartDay viewholder.findViewById<TextView>(R.id.tv_end_date).text= contentDTOs!![p1].exhEndDay viewholder.findViewById<TextView>(R.id.tv_place).text= contentDTOs!![p1].exhPlace //Image Glide.with(p0.itemView.context).load(contentDTOs!![p1].imageUrl).into(viewholder.findViewById(R.id.iv_poster)) } } }
- 미해결하울의 안드로이드 인스타그램 클론 만들기
NavigationBarView 사용법 변경으로 인한 네비게이션 바 애니메이션 적용법
NavigationBarView 23년 이후 .. : 네이버블로그 (naver.com)해결방법 정리 블로그
- 미해결하울의 안드로이드 인스타그램 클론 만들기
안드로이드 11 이상부터 startActivityForResult 지원 안하므로 다른 방법 이용
https://blog.naver.com/tmvmffpsej/223135588600해결방법 정리한 블로그
- 미해결하울의 안드로이드 인스타그램 클론 만들기
bottom_navigation 오류
bottom_navigation.setOnNavigationItemSelectedListener()에서 에러가 발생합니다. bottom_navigation이 빨간색 에러로 발생하며 import 부분의 kotlinx.android.~ 에서도 android에서 에러가 발생합니다.activity_main 레이아웃에도 정확히 작성했는데 어떻게 해야할지 모르겠습니다..
- 미해결하울의 안드로이드 인스타그램 클론 만들기
게시물을 최신게시물순으로 하고싶은데 어떻게 하면 될까요..?ㅠ
게시물을 최신게시물 순으로 하고 싶은데 혹시 어떻게 하면 되는지 아시는 분은 알려주시면 감사하겠습니다ㅠ
- 미해결하울의 안드로이드 인스타그램 클론 만들기
오류..? 에러..?
안녕하세요 로그인 액티비티에 저렇게 화면이 떠가지구요... 테마적용이 안되서 그런 것 같은데 어떻게 바꿔줘야할 지모르겠어서 질문드립니다..!
- 미해결하울의 안드로이드 인스타그램 클론 만들기
페이스북 로그인
페이스북 로그인버튼을 활용하여 실행하면, 페이스북 계정을 올바르게 입력하였음에도 다음과 같이 나타나서 문의드립니다. 코드는 아래와 같습니다. package com.example.howlstagramimport android.content.ContentValues.TAGimport android.content.Intentimport android.content.pm.PackageInfoimport android.content.pm.PackageManagerimport android.os.Bundleimport android.service.controls.ControlsProviderService.TAGimport android.util.Base64import android.util.Logimport android.widget.Toastimport androidx.appcompat.app.AppCompatActivityimport androidx.fragment.app.FragmentActivityimport com.facebook.AccessTokenimport com.facebook.CallbackManagerimport com.facebook.FacebookCallbackimport com.facebook.FacebookExceptionimport com.facebook.login.LoginManagerimport com.facebook.login.LoginResultimport com.google.android.gms.auth.api.Authimport com.google.android.gms.auth.api.signin.GoogleSignInimport com.google.android.gms.auth.api.signin.GoogleSignInAccountimport com.google.android.gms.auth.api.signin.GoogleSignInClientimport com.google.android.gms.auth.api.signin.GoogleSignInOptionsimport com.google.firebase.auth.FacebookAuthProviderimport com.google.firebase.auth.FirebaseAuthimport com.google.firebase.auth.FirebaseUserimport com.google.firebase.auth.GoogleAuthProviderimport kotlinx.android.synthetic.main.activity_login.*import java.security.MessageDigestimport java.security.NoSuchAlgorithmExceptionimport java.util.*class LoginActivity : AppCompatActivity() { var auth : FirebaseAuth? = null var googleSignInClient : GoogleSignInClient? = null var GOOGLE_LOGIN_CODE = 9001 var callbackManager : CallbackManager? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login) auth = FirebaseAuth.getInstance() email_login_button.setOnClickListener { signinAndSignup() } google_sign_in_button.setOnClickListener { //First Step googleLogin() } facebook_login_button.setOnClickListener { facebooklogin() //First Step } var gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken("284216010288-9grtncojbd715e2b7ud2mkg47g3nttpj.apps.googleusercontent.com") .requestEmail() .build() googleSignInClient = GoogleSignIn.getClient(this,gso) printHashKey() callbackManager = CallbackManager.Factory.create() } fun printHashKey() { try { val info: PackageInfo = packageManager .getPackageInfo(packageName, PackageManager.GET_SIGNATURES) for (signature in info.signatures) { val md = MessageDigest.getInstance("SHA") md.update(signature.toByteArray()) val hashKey = String(Base64.encode(md.digest(), 0)) Log.i("TAG", "printHashKey() Hash Key: $hashKey") } } catch (e: NoSuchAlgorithmException) { Log.e("TAG", "printHashKey()", e) } catch (e: Exception) { Log.e("TAG", "printHashKey()", e) } } fun googleLogin(){ var signInIntent = googleSignInClient?.signInIntent startActivityForResult(signInIntent,GOOGLE_LOGIN_CODE) } fun facebooklogin(){ LoginManager.getInstance() // public profile과 email을 가져옴 .logInWithReadPermissions(this, Arrays.asList("public_profile","email")) LoginManager.getInstance() // 로그인 성공시 가져오게 되는 부분. .registerCallback(callbackManager, object : FacebookCallback<LoginResult> { override fun onSuccess(result: LoginResult?) { // Second Step handleFacebookAccessToken(result?.accessToken) //로그인 성공시 데이터를 firebase로 } override fun onCancel() { } override fun onError(error: FacebookException) { } }) } fun handleFacebookAccessToken(token : AccessToken?){ var credential = FacebookAuthProvider.getCredential(token?.token!!) auth?.signInWithCredential(credential) // firebase로 정보를 넘기는것. google과 동일 ?.addOnCompleteListener { task -> if (task.isSuccessful) { //login //Third Step 응답값을 받아서 정리한다. moveMainPage(task.result?.user) } else { //show the error message Toast.makeText(this, task.exception?.message, Toast.LENGTH_LONG).show() } } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) callbackManager?.onActivityResult(requestCode, resultCode,data) if(requestCode == GOOGLE_LOGIN_CODE){ var result = Auth.GoogleSignInApi.getSignInResultFromIntent(data) if(result.isSuccess){ var account = result.signInAccount //second step firebaseAuthWithGoogle(account) } } } fun firebaseAuthWithGoogle(account : GoogleSignInAccount?){ var credential = GoogleAuthProvider.getCredential(account?.idToken,null) auth?.signInWithCredential(credential) ?.addOnCompleteListener { task -> if (task.isSuccessful) { //login moveMainPage(task.result?.user) } else { //show the error message Toast.makeText(this, task.exception?.message, Toast.LENGTH_LONG).show() } } } fun signinAndSignup(){ // 회원가입 하는 코드 auth?.createUserWithEmailAndPassword(email_edittext.text.toString(), password_edittext.text.toString()) ?.addOnCompleteListener { task -> if(task.isSuccessful){ //creating a user account moveMainPage(task.result?.user) }else if(task.exception?.message.isNullOrEmpty()){ //show the error message Toast.makeText(this, task.exception?.message, Toast.LENGTH_LONG).show() }else{ //login if you have account signinEmail() } } } fun signinEmail(){ auth?.signInWithEmailAndPassword(email_edittext.text.toString(), password_edittext.text.toString()) ?.addOnCompleteListener { task -> if (task.isSuccessful) { //login moveMainPage(task.result?.user) } else { //show the error message Toast.makeText(this, task.exception?.message, Toast.LENGTH_LONG).show() } } } fun moveMainPage(user:FirebaseUser?){ if(user != null){ startActivity(Intent(this, MainActivity::class.java)) } }}
- 미해결하울의 안드로이드 인스타그램 클론 만들기
댓글 activity에서 mainActivity의 userFragment 이동 방법관련..
강의 종료 후 혼자서 추가적으로 기능넣어보고있는데, 댓글activity에서 userId를 클릭했을 때 mainActivity의 userFragment를 호출하려 하는데 activity_main.xml의 main_content id값을 찾을수 없다고 하는데 이런경우에는 어떤방식으로 처리하는 지 궁금합니다.. 아래는 commentActivity에서 userFragment를 실행하려고 한 코드입니다. 초보라 어떤방식으로 처리하는지를 모르겠네요ㅜㅜ var userFragment = UserFragment() var bundle = Bundle() bundle.putString("destinationUid", comments[position].uid) bundle.putString("userId", comments[position].userId) userFragment.arguments = bundle supportFragmentManager.beginTransaction().replace(R.id.main_content, userFragment).commit() 에러 내용은 아래입니다.. --------- beginning of crash 2022-07-28 10:52:43.179 13614-13614/com.howl.howlstargram E/AndroidRuntime: FATAL EXCEPTION: main Process: com.howl.howlstargram, PID: 13614 java.lang.IllegalArgumentException: No view found for id 0x7f080146 (com.howl.howlstargram:id/main_content) for fragment UserFragment{994a94c} (4d237323-a5cb-4b62-9170-71b9fc5bbff9 id=0x7f080146) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:513) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100) at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002) at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
- 미해결하울의 안드로이드 인스타그램 클론 만들기
댓글activity에서 userId를 클릭했을 때
강의 종료 후 혼자서 추가적으로 기능넣어보고있는데, 댓글activity에서 userId를 클릭했을 때 mainActivity의 userFragment를 호출하려 하는데 activity_main.xml의 main_content id값을 찾을수 없다고 하는데 이런경우에는 어떤방식으로 처리하는 지 궁금합니다.. 아래는 commentActivity에서 userFragment를 실행하려고 한 코드입니다. 초보라 어떤방식으로 처리하는지를 모르겠네요ㅜㅜ var userFragment = UserFragment() var bundle = Bundle() bundle.putString("destinationUid", comments[position].uid) bundle.putString("userId", comments[position].userId) userFragment.arguments = bundle supportFragmentManager.beginTransaction().replace(R.id.main_content, userFragment).commit() 에러 내용은 아래입니다.. --------- beginning of crash 2022-07-28 10:52:43.179 13614-13614/com.howl.howlstargram E/AndroidRuntime: FATAL EXCEPTION: main Process: com.howl.howlstargram, PID: 13614 java.lang.IllegalArgumentException: No view found for id 0x7f080146 (com.howl.howlstargram:id/main_content) for fragment UserFragment{994a94c} (4d237323-a5cb-4b62-9170-71b9fc5bbff9 id=0x7f080146) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:513) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100) at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002) at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
- 미해결하울의 안드로이드 인스타그램 클론 만들기
파이어베이스 연결에서 막힙니다,,
안녕하세요. 강의 잘 듣고 있습니다. 다름이 아니라 파이어베이스에 연결할 때 강사님과는 달라서 멘붕이에요 ㅠㅠ 첫번째 사진처럼 떠서 처음꺼 눌러서 들어가니 컨넥트 누르면 두번재 사진 처럼 뜨네요 ㅠㅠ
- 미해결하울의 안드로이드 인스타그램 클론 만들기
파이어베이스 이미지url Glide로 불러올 때 에러
파이어베이스 스토어의 imageUrl을 Glide로 불러올 때 아래와 같은 에러가 발생하는데 어떻게 처리 해야 할까요? E/GlideExecutor: Request threw uncaught throwable java.lang.SecurityException: Permission Denial: opening provider com.google.android.apps.photos.contentprovider.impl.MediaContentProvider from ProcessRecord
- 미해결하울의 안드로이드 인스타그램 클론 만들기
- 혹시 사진 업로드 여러장 되게 할수 있는 방법이 있을까요??
- 혹시 사진 업로드 여러장 되게 할수 있는 방법이 있을까요?? 해보고 싶은데 잘 모르겠어서 도움을 구합니다 ㅠ
- 미해결하울의 안드로이드 인스타그램 클론 만들기
화면전환시 색깔이 안나오고 흰바탕입니다
코드는 제대로 입력되어있습니다 무엇을 더 건드려야할까요
- 미해결하울의 안드로이드 인스타그램 클론 만들기
Facebook공식 문서에서 제공해주는 최신 SDK 오류
안녕하세요 강의 잘 듣고있습니다. FaceBook 로그인 기능을 구현하던 도중 implementation 'com.facebook.android:facebook-android-sdk:[4,5)' 를 적용하고 컴파일하게되면 Go to the documentation to learn how to Fix dependency resolution errors. 에러가 발생합니다. 원인을 알 수 있을까요?
- 미해결하울의 안드로이드 인스타그램 클론 만들기
startActivityForResult와 onActivityResult는 이제 안드로이드 스튜디오에서 못쓰게 하는데 어떻게 수정 해야 할까요?
startActivityForResult와 onActivityResult는 이제 안드로이드 스튜디오에서 못쓰게 하는데 어떻게 수정 해야 할까요?
- 미해결하울의 안드로이드 인스타그램 클론 만들기
google 계정 선택창이 아예 뜨지 않습니다.
3강의 google 계정 선택창이 아예 뜨지 않습니다. 참고적으로 소스코드는 startActivityForResult가 사용이 안되어 startForResult로 바꾸었습니다. google_sign_in_button.setOnClickListener{ Log.i("태그","버튼 왔습니다.") googleLogin() } var gso=GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN) .requestIdToken(getString(R.string.default_web_client_id)) .requestEmail() .build() googleSignInClient=GoogleSignIn.getClient(this,gso) } fun googleLogin(){ var signInIntent = googleSignInClient?.signInIntent Log.i("태그","버튼1 왔습니다."+signInIntent) startForResult.launch(signInIntent) } private val startForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()){ result: ActivityResult -> Log.i("태그","버튼2 왔습니다."+result) if(result.resultCode== GOOGLE_LOGIN_CODE) { Log.i("태그","왔습니다.") val intent:Intent=result.data!! val task: Task<GoogleSignInAccount> = GoogleSignIn.getSignedInAccountFromIntent(intent) try{ val account =task.getResult(ApiException::class.java)!! Log.d(ContentValues.TAG,"firebaseAuthWithGoogle"+account.id) firebaseAuthWithGoogle(account) }catch(e:ApiException){ Log.w(ContentValues.TAG,"Google sign in failed",e) } } }
- 미해결하울의 안드로이드 인스타그램 클론 만들기
로그인 시 에러
로그인 시 an internal error has occured라며 에러가 뜹니다. 파이어베이스에서 로그인 권한 설정도 했습니다..!
- 미해결하울의 안드로이드 인스타그램 클론 만들기
3강에서 startActivityForResult 사용불가 문제
안녕하세요. 3강에서 쓰는 startActivityForResult와 onActivityResult는 이제 안드로이드 스튜디오에서 못쓰게 하는데 어떻게 해야 할까요? ㅠㅠ