@@ -16,7 +16,8 @@ import dagger.hilt.android.AndroidEntryPoint
 
 @AndroidEntryPoint
 class ProfileFragment : Fragment() {
-    private lateinit var binding: FragmentProfileBinding            //뷰 바인딩
+    private var _binding: FragmentProfileBinding? = null            //뷰 바인딩
+    private val binding get() = _binding!!
     private var selectedBadges = ArrayList<Badge>()                 //대표 뱃지 리스트
     private val userViewModel: UserViewModel by viewModels()
     private val profileCommon = ProfileCommon()     //공통 로직 인스턴스 생성
@@ -25,18 +26,11 @@ class ProfileFragment : Fragment() {
         inflater: LayoutInflater, container: ViewGroup?,
         savedInstanceState: Bundle?
     ): View {
-        binding = FragmentProfileBinding.inflate(inflater, container, false)
+        _binding = FragmentProfileBinding.inflate(inflater, container, false)
 
         //ViewPager2 Adapter 연결
         profileCommon.setupViewPager(binding, requireActivity(), true)
 
-        //팔로우 클릭 처리
-        profileCommon.onFollowClicked(requireActivity(), binding.llProfileFollower, "follower")
-        profileCommon.onFollowClicked(requireActivity(), binding.llProfileFollowing, "following")
-
-        //클릭 이벤트 처리 설정
-        initClickListener()
-
         // LiveData 관찰 (데이터가 변경될 때 자동 업데이트되도록 설정)
         userViewModel.profile.observe(viewLifecycleOwner) { profile ->
             profile?.let {
@@ -51,10 +45,20 @@ class ProfileFragment : Fragment() {
 
         userViewModel.errorMessage.observe(viewLifecycleOwner) { errorMsg ->
             errorMsg?.let {
-                Toast.makeText(requireContext(), it, Toast.LENGTH_LONG).show()
+                val errorToUser = when {
+                    it.contains("IllegalStateException") -> "데이터를 불러오는 중 문제가 발생했습니다. 다시 시도해 주세요."
+                    it.contains("JsonSyntaxException") -> "서버 응답이 올바르지 않습니다. 업데이트를 확인해 주세요."
+                    it.contains("SocketTimeoutException") -> "서버 응답이 지연되고 있습니다. 잠시 후 다시 시도해 주세요."
+                    it.contains("IOException") -> "네트워크 연결을 확인해 주세요."
+                    else -> "알 수 없는 오류가 발생했습니다. 잠시 후 다시 시도해 주세요."
+                }
+
+                Toast.makeText(requireContext(), errorToUser, Toast.LENGTH_LONG).show()
+                Log.e("ProfileFragmentVM", "오류 발생: $errorMsg")
             }
         }
 
+
         // 유저 데이터 로드
         userViewModel.loadProfile()
 
@@ -64,28 +68,39 @@ class ProfileFragment : Fragment() {
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
 
+        //클릭 이벤트 처리 설정
+        initClickListener()
+
         //레벨 달성률 게이지 바 구현
         profileCommon.setupCircularProgressBar(binding, 76, 100)
 
         //뱃지 더미 데이터 - 테스트 시 주석 해제 or 설정
         selectedBadges.clear()
 
         selectedBadges.apply {
-            add(Badge("프로 챌린저", R.drawable.img_badge_challenge_01))
-            add(Badge("수준급 스터디언", R.drawable.img_badge_challenge_01))
-            add(Badge("운동 스타터", R.drawable.img_badge_challenge_01))
+            add(Badge("프로 챌린저", R.drawable.badge_type_fromtoday_challenger))
+            add(Badge("수준급 스터디언", R.drawable.badge_type_fromtoday_challenger))
+            add(Badge("운동 스타터", R.drawable.badge_type_fromtoday_challenger))
         }
 
         //설정한 대표 뱃지 개수에 따라 visibility 조정
         profileCommon.setupBadges(binding, selectedBadges)
 
+
+
+    }
+
+    override fun onDestroyView() {
+        super.onDestroyView()
+        _binding = null
+    }
+
+    private fun initClickListener() {
         // 설정 버튼 클릭 처리
         binding.ivProfileMenu.setOnClickListener {
-            // Fragment 전환
-            this.parentFragmentManager.beginTransaction()
-                .replace(R.id.main_frame, SettingFragment())
-                .addToBackStack(null)
-                .commit()
+            val intent = Intent(requireContext(), ProfileMoreActivity::class.java)
+            intent.putExtra("type", "setting")
+            startActivity(intent)
         }
 
         // 프로필 수정 모드
@@ -94,22 +109,22 @@ class ProfileFragment : Fragment() {
             startActivity(intent)
         }
 
+        // 레벨 클릭 시 레벨 로드맵으로 전환
+        binding.llProfileRank.setOnClickListener {
+            val intent = Intent(requireContext(), LevelActivity::class.java)
+            startActivity(intent)
+        }
+
+        //팔로우 클릭 처리
+        profileCommon.onFollowClicked(requireActivity(), binding.llProfileFollower, "follower")
+        profileCommon.onFollowClicked(requireActivity(), binding.llProfileFollowing, "following")
+
         // 대표 뱃지 클릭 시 뱃지 수정 화면으로 전환
         binding.llProfileBadge.setOnClickListener {
             val intent = Intent(requireContext(), EditProfileActivity::class.java)
             intent.putExtra("clicked", "badge")
             startActivity(intent)
 
         }
-
-    }
-
-    private fun initClickListener() {
-        binding.llProfileRank.setOnClickListener {
-            parentFragmentManager.beginTransaction()
-                .replace(R.id.main_frame, ProfileLevelFragment())
-                .addToBackStack(null) // 뒤로 가기 지원
-                .commit()
-        }
     }
 }
\ No newline at end of file

리뷰: 에러 메시지 처리 부분이 훨씬 사용자 친화적으로 개선되었네요! 에러 메시지가 그대로 보여졌던 전과 달리, 이제는 각 상황별로 사용자가 이해하기 쉬운 안내 메시지로 변환되어 나타나니까 사용성이 훨씬 좋아진 것 같습니다👍