diff --git a/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/MainActivity.kt b/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/MainActivity.kt
index 264533ba0e95c196dbf7c45e67d54f99431fe6d0..73c0536d1a1abc5d4b91a01c6c8bec8261d21cf9 100644
--- a/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/MainActivity.kt
+++ b/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/MainActivity.kt
@@ -6,6 +6,7 @@ import android.content.Intent
 import android.content.pm.ActivityInfo
 import android.os.Build
 import android.os.Bundle
+import android.util.Log
 import android.widget.Toast
 import androidx.annotation.RequiresApi
 import androidx.appcompat.app.AppCompatActivity
@@ -22,10 +23,9 @@ import java.util.Date
 
 @AndroidEntryPoint
 class MainActivity : AppCompatActivity() {
-    private lateinit var db : TransactionViewModel
+    private lateinit var transactionViewModel : TransactionViewModel
     private lateinit var locationViewModel: LocationViewModel
-    private lateinit var navigationViewModel : NavigationViewModel
-
+    private lateinit var navigationViewModel: NavigationViewModel
     private lateinit var locationAdapter: LocationAdapter
     private lateinit var cameraAdapter: CameraAdapter
 
@@ -48,19 +48,19 @@ class MainActivity : AppCompatActivity() {
         //startService(Intent(this, TokenService::class.java))
 
         // Initialize ViewModel
-        db = ViewModelProvider(this)[TransactionViewModel::class.java]
-        locationViewModel = ViewModelProvider(this)[LocationViewModel::class.java]
         navigationViewModel = ViewModelProvider(this)[NavigationViewModel::class.java]
-        db.getAllDate()
-        db.getTransactions("all")
-        db.getCashFlowAndGrowthByMonth(Date())
-        db.getStatisticByMonth(Date())
+        transactionViewModel = ViewModelProvider(this)[TransactionViewModel::class.java]
+        locationViewModel = ViewModelProvider(this)[LocationViewModel::class.java]
+        transactionViewModel.getAllDate()
+        transactionViewModel.getTransactions("all")
+        transactionViewModel.getCashFlowAndGrowthByMonth(Date())
+        transactionViewModel.getStatisticByMonth(Date())
 
         // Navigation Button Listener
         binding.ibTransactionBtn.setOnClickListener {
-            db.getAllDate()
-            db.getTransactions("all")
-            db.getCashFlowAndGrowthByMonth(Date())
+            transactionViewModel.getAllDate()
+            transactionViewModel.getTransactions("all")
+            transactionViewModel.getCashFlowAndGrowthByMonth(Date())
             navigationViewModel.navigate("transaction")
             navController.navigate(R.id.transactionFragment)
         }
@@ -91,6 +91,9 @@ class MainActivity : AppCompatActivity() {
             binding.ibScanBtn.setImageResource(R.drawable.scan_inactive_ic)
             binding.ibStatisticsBtn.setImageResource(R.drawable.statistic_inactive_ic)
             binding.ibSettingsBtn.setImageResource(R.drawable.setting_inactive_ic)
+
+            Log.d("NavViewModel", it)
+
             when (it) {
                 "transaction" -> {
                     binding.ibTransactionBtn.setImageResource(R.drawable.transaction_active_ic)
@@ -111,25 +114,29 @@ class MainActivity : AppCompatActivity() {
                     binding.ibSettingsBtn.setImageResource(R.drawable.setting_active_ic)
                     binding.tvHeader.setText(R.string.title_settings)
                 }
+                "transactionDetail" -> {
+                    binding.ibTransactionBtn.setImageResource(R.drawable.transaction_active_ic)
+                    binding.tvHeader.setText(R.string.title_transaction_detail)
+                }
             }
         }
 
-        db.addTransactionStatus.observe(this){
+        transactionViewModel.addTransactionStatus.observe(this){
             if (it){
-                db.getAllDate()
-                db.getTransactions("all")
-                db.getCashFlowAndGrowthByMonth(Date())
-                db.getStatisticByMonth(Date())
+                transactionViewModel.getAllDate()
+                transactionViewModel.getTransactions("all")
+                transactionViewModel.getCashFlowAndGrowthByMonth(Date())
+                transactionViewModel.getStatisticByMonth(Date())
                 navController.navigate(R.id.transactionFragment)
-                db.resetAddTransactionStatus()
-                db.changeAddStatus(false)
+                transactionViewModel.resetAddTransactionStatus()
+                transactionViewModel.changeAddStatus(false)
             }
         }
 
-        db.cameraStatus.observe(this){
+        transactionViewModel.cameraStatus.observe(this){
             if (it){
                 navController.navigate(R.id.transactionForm)
-                db.changeCameraStatus(false)
+                transactionViewModel.changeCameraStatus(false)
             }
         }
 
@@ -138,8 +145,8 @@ class MainActivity : AppCompatActivity() {
     @RequiresApi(Build.VERSION_CODES.S)
     override fun onStart() {
         super.onStart()
-        db = ViewModelProvider(this)[TransactionViewModel::class.java]
-        db.getAllDate()
+        transactionViewModel = ViewModelProvider(this)[TransactionViewModel::class.java]
+        transactionViewModel.getAllDate()
         locationAdapter = LocationAdapter({ this }, locationViewModel)
         locationAdapter.requestLocationUpdates()
 
@@ -149,7 +156,7 @@ class MainActivity : AppCompatActivity() {
 
     override fun onDestroy() {
         super.onDestroy()
-        db.removeObserveAllData(this)
+        transactionViewModel.removeObserveAllData(this)
     }
 
     override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
diff --git a/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/transaction/TransactionFragment.kt b/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/transaction/TransactionFragment.kt
index 8b5c661a453b30f78ec231e7ce71ea070f28a432..772201574255e14ac9de25bf7d68a7126f32f0eb 100644
--- a/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/transaction/TransactionFragment.kt
+++ b/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/transaction/TransactionFragment.kt
@@ -2,7 +2,6 @@ package com.example.transactionapp.ui.screen.mainmenu.transaction
 
 import android.content.pm.ActivityInfo
 import android.os.Bundle
-import android.util.Log
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
@@ -10,6 +9,7 @@ import androidx.core.content.ContextCompat
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.activityViewModels
 import androidx.lifecycle.Observer
+import androidx.lifecycle.ViewModelProvider
 import androidx.navigation.NavController
 import androidx.navigation.Navigation
 import androidx.navigation.fragment.findNavController
@@ -17,6 +17,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
 import com.example.transactionapp.R
 import com.example.transactionapp.databinding.FragmentTransactionBinding
+import com.example.transactionapp.ui.viewmodel.navigation.NavigationViewModel
 import com.example.transactionapp.utils.changeNominalToIDN
 import dagger.hilt.android.AndroidEntryPoint
 import kotlin.math.abs
@@ -24,6 +25,7 @@ import kotlin.math.abs
 @AndroidEntryPoint
 class TransactionFragment : Fragment() {
     private val transactionViewModel: TransactionViewModel by activityViewModels()
+    private lateinit var navigationViewModel : NavigationViewModel
     private lateinit var navController: NavController
 
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@@ -41,6 +43,9 @@ class TransactionFragment : Fragment() {
         // Bind layout using layout binding
         val binding = FragmentTransactionBinding.inflate(layoutInflater)
 
+        // Get ViewModel
+        navigationViewModel = ViewModelProvider(requireActivity())[NavigationViewModel::class.java]
+
         // Observe transaction list
         transactionViewModel.dateAll.observe(requireActivity()) { transactionList ->
             val transactionAdapter = TransactionAdapter(transactionList, this::onTransactionClicked)
@@ -71,6 +76,7 @@ class TransactionFragment : Fragment() {
         transactionViewModel.navigateToTransactionDetail.observe(requireActivity(), Observer { transactionId ->
             transactionId?.let {
                 this.findNavController().navigate(TransactionFragmentDirections.actionTransactionFragmentToTransactionDetailsFragment(transactionId))
+                navigationViewModel.navigate("transactionDetail")
                 transactionViewModel.onTransactionDetailNavigated()
             }
         })
diff --git a/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/transactionDetail/TransactionDetailsFragment.kt b/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/transactionDetail/TransactionDetailsFragment.kt
index 1bca52714a78975223cc3678a4d8dcd8ab41f3e8..b8565a061332d5682e5b0e8ed86e4856df7f90c4 100644
--- a/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/transactionDetail/TransactionDetailsFragment.kt
+++ b/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/transactionDetail/TransactionDetailsFragment.kt
@@ -43,7 +43,6 @@ class TransactionDetailsFragment : Fragment() {
 
         // Get an instance of transaction from transaction id argument
         val transactionId = TransactionDetailsFragmentArgs.fromBundle(requireArguments()).transactionId
-        Log.i("Args", transactionId.toString())
         db.getTransactionById(transactionId)
         db.transactionById.observe(viewLifecycleOwner) {
             binding.titleInput.setText(it.title)
diff --git a/app/src/main/java/com/example/transactionapp/ui/viewmodel/navigation/NavigationViewModel.kt b/app/src/main/java/com/example/transactionapp/ui/viewmodel/navigation/NavigationViewModel.kt
index a3b3cdc58a421fead5be14f6a5bb7a7a4b94cbb4..973cd2502ea40182b8112546f8710b305375767c 100644
--- a/app/src/main/java/com/example/transactionapp/ui/viewmodel/navigation/NavigationViewModel.kt
+++ b/app/src/main/java/com/example/transactionapp/ui/viewmodel/navigation/NavigationViewModel.kt
@@ -1,13 +1,15 @@
 package com.example.transactionapp.ui.viewmodel.navigation
 
 import android.util.Log
+import androidx.annotation.StringRes
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.ViewModel
+import com.example.transactionapp.R
 
 class NavigationViewModel : ViewModel() {
 
-    // fragmentName
+    // Fragment name
     private val _fragmentName = MutableLiveData<String>("transaction")
     val fragmentName : LiveData<String>
         get() = _fragmentName
@@ -15,5 +17,6 @@ class NavigationViewModel : ViewModel() {
     // Navigate
     fun navigate(value: String) {
         _fragmentName.value = value
+        Log.d("NavViewModel", _fragmentName.value!!)
     }
 }
\ No newline at end of file