diff --git a/app/src/main/java/org/sopt/dosopttemplate/data/DummyFriendsData.kt b/app/src/main/java/org/sopt/dosopttemplate/data/DummyFriendData.kt similarity index 99% rename from app/src/main/java/org/sopt/dosopttemplate/data/DummyFriendsData.kt rename to app/src/main/java/org/sopt/dosopttemplate/data/DummyFriendData.kt index 9eda54c..e13fed8 100644 --- a/app/src/main/java/org/sopt/dosopttemplate/data/DummyFriendsData.kt +++ b/app/src/main/java/org/sopt/dosopttemplate/data/DummyFriendData.kt @@ -2,7 +2,7 @@ package org.sopt.dosopttemplate.data import org.sopt.dosopttemplate.R -object DummyFriendsData { +object DummyFriendData { val dummyFriendList = listOf( FriendsSealed.FriendsMe( profileImage = R.drawable.img_main_profile, diff --git a/app/src/main/java/org/sopt/dosopttemplate/presentation/BnvActivity.kt b/app/src/main/java/org/sopt/dosopttemplate/presentation/BnvActivity.kt index 332be40..83eeaf7 100644 --- a/app/src/main/java/org/sopt/dosopttemplate/presentation/BnvActivity.kt +++ b/app/src/main/java/org/sopt/dosopttemplate/presentation/BnvActivity.kt @@ -3,6 +3,7 @@ package org.sopt.dosopttemplate.presentation import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment +import androidx.recyclerview.widget.RecyclerView import org.sopt.dosopttemplate.R import org.sopt.dosopttemplate.databinding.ActivityBnvBinding import org.sopt.dosopttemplate.util.BackPressedUtil @@ -15,46 +16,35 @@ class BnvActivity : AppCompatActivity() { binding = ActivityBnvBinding.inflate(layoutInflater) setContentView(binding.root) - // 처음에 보여주어야 하는 프래그먼트를 변수로 - val currentFragment = supportFragmentManager.findFragmentById(R.id.fcv_home) - // 만약 프래그먼트가 끼워지지 않았다면 프래그먼트메이저를 사용하여 끼워보기 - if (currentFragment == null) { - supportFragmentManager.beginTransaction() - .add(R.id.fcv_home, HomeFragment()) - .commit() - } // Fragment의 재생성과 newInstance() 알아보기 + initialFragment(R.id.fcv_home, HomeFragment()) clickBnv() + + updown_Listener(RecyclerView(this)) } private fun clickBnv() { binding.bnvHome.setOnItemSelectedListener { when (it.itemId) { R.id.menu_home -> { - replaceFragment(HomeFragment()) + val fragment = HomeFragment.newInstance() + replaceFragment(fragment) true } R.id.menu_do_android -> { - replaceFragment(DoAndroidFragment()) + val fragment = DoAndroidFragment.newInstance() + replaceFragment(fragment) true } R.id.menu_mypage -> { - val fragment = MypageFragment() - val getId = intent.getStringExtra("ID") val getNickname = intent.getStringExtra("Nickname") val getAge = intent.getStringExtra("Age") // 자동 로그인이 아닌 경우 프래그먼트로 유저 정보 전달 - val bundle = Bundle().apply { - putString("userId", getId) - putString("userNickname", getNickname) - putString("userAge", getAge) - } - - fragment.arguments = bundle + val fragment = MypageFragment.newInstance(getId, getNickname, getAge) replaceFragment(fragment) true @@ -69,10 +59,27 @@ class BnvActivity : AppCompatActivity() { backPressedUtil.BackButton() } + fun updown_Listener(view: RecyclerView?) { + binding.bnvHome.setOnClickListener { + view?.smoothScrollToPosition(0) + } + } + private fun replaceFragment(fragment: Fragment) { supportFragmentManager .beginTransaction() .replace(R.id.fcv_home, fragment) .commit() } + + // 프래그먼트 초기화 함수 + private fun initialFragment(containerViewId: Int, fragment: Fragment) { + val currentFragment = supportFragmentManager.findFragmentById(containerViewId) + + if (currentFragment == null) { + supportFragmentManager.beginTransaction() + .add(containerViewId, fragment) + .commit() + } + } } diff --git a/app/src/main/java/org/sopt/dosopttemplate/presentation/DoAndroidFragment.kt b/app/src/main/java/org/sopt/dosopttemplate/presentation/DoAndroidFragment.kt index 6ae4580..e5ad336 100644 --- a/app/src/main/java/org/sopt/dosopttemplate/presentation/DoAndroidFragment.kt +++ b/app/src/main/java/org/sopt/dosopttemplate/presentation/DoAndroidFragment.kt @@ -8,6 +8,11 @@ import androidx.fragment.app.Fragment import org.sopt.dosopttemplate.databinding.FragmentDoAndroidBinding class DoAndroidFragment : Fragment() { + companion object { + fun newInstance(): DoAndroidFragment { + return DoAndroidFragment() + } + } private var _binding: FragmentDoAndroidBinding? = null private val binding: FragmentDoAndroidBinding diff --git a/app/src/main/java/org/sopt/dosopttemplate/presentation/HomeFragment.kt b/app/src/main/java/org/sopt/dosopttemplate/presentation/HomeFragment.kt index 5fcdc8e..ee7d638 100644 --- a/app/src/main/java/org/sopt/dosopttemplate/presentation/HomeFragment.kt +++ b/app/src/main/java/org/sopt/dosopttemplate/presentation/HomeFragment.kt @@ -5,11 +5,16 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment -import org.sopt.dosopttemplate.data.DummyFriendsData +import org.sopt.dosopttemplate.data.DummyFriendData import org.sopt.dosopttemplate.databinding.FragmentHomeBinding import org.sopt.dosopttemplate.presentation.adapter.FriendsSealedAdapter class HomeFragment : Fragment() { + companion object { + fun newInstance(): HomeFragment { + return HomeFragment() + } + } private var _binding: FragmentHomeBinding? = null private val binding: FragmentHomeBinding @@ -28,9 +33,9 @@ class HomeFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - var friendsSealedAdapter = FriendsSealedAdapter(requireContext()) + val friendsSealedAdapter = FriendsSealedAdapter(requireContext()) binding.rvFriends.adapter = friendsSealedAdapter - friendsSealedAdapter.addFriendsData(ArrayList(DummyFriendsData.dummyFriendList)) + friendsSealedAdapter.setFriendsData(ArrayList(DummyFriendData.dummyFriendList)) } override fun onDestroyView() { diff --git a/app/src/main/java/org/sopt/dosopttemplate/presentation/MypageFragment.kt b/app/src/main/java/org/sopt/dosopttemplate/presentation/MypageFragment.kt index 5098a01..1645c99 100644 --- a/app/src/main/java/org/sopt/dosopttemplate/presentation/MypageFragment.kt +++ b/app/src/main/java/org/sopt/dosopttemplate/presentation/MypageFragment.kt @@ -12,6 +12,17 @@ import org.sopt.dosopttemplate.di.UserSharedPreferences import org.sopt.dosopttemplate.presentation.auth.LoginActivity class MypageFragment : Fragment() { + companion object { + fun newInstance(userId: String?, userNickname: String?, userAge: String?): MypageFragment { + val fragment = MypageFragment() + val args = Bundle() + args.putString("userId", userId) + args.putString("userNickname", userNickname) + args.putString("userAge", userAge) + fragment.arguments = args + return fragment + } + } private var _binding: FragmentMypageBinding? = null private val binding: FragmentMypageBinding diff --git a/app/src/main/java/org/sopt/dosopttemplate/presentation/adapter/FriendsSealedAdapter.kt b/app/src/main/java/org/sopt/dosopttemplate/presentation/adapter/FriendsSealedAdapter.kt index 7c1f72d..2bf463e 100644 --- a/app/src/main/java/org/sopt/dosopttemplate/presentation/adapter/FriendsSealedAdapter.kt +++ b/app/src/main/java/org/sopt/dosopttemplate/presentation/adapter/FriendsSealedAdapter.kt @@ -15,7 +15,7 @@ class FriendsSealedAdapter(context: Context) : RecyclerView.Adapter = ArrayList() - fun addFriendsData(list: ArrayList) { + fun setFriendsData(list: ArrayList) { friendList.clear() friendList.addAll(list) } diff --git a/app/src/main/res/color/bnv_selector.xml b/app/src/main/res/color/bnv_selector.xml new file mode 100644 index 0000000..35263f9 --- /dev/null +++ b/app/src/main/res/color/bnv_selector.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_bnv.xml b/app/src/main/res/layout/activity_bnv.xml index bca247b..8d54453 100644 --- a/app/src/main/res/layout/activity_bnv.xml +++ b/app/src/main/res/layout/activity_bnv.xml @@ -10,16 +10,18 @@ android:id="@+id/fcv_home" android:layout_width="0dp" android:layout_height="0dp" + android:layout_marginBottom="15dp" app:layout_constraintBottom_toTopOf="@+id/bnv_home" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginBottom="15dp"/> + app:layout_constraintTop_toTopOf="parent" /> #808080 #ff3300 #D9D9D9 + #4D377B + #D1C4E9 \ No newline at end of file