diff --git a/app/src/main/java/com/appttude/h_mal/farmr/base/ChildFragment.kt b/app/src/main/java/com/appttude/h_mal/farmr/base/ChildFragment.kt index 9f43adb..7fab86d 100644 --- a/app/src/main/java/com/appttude/h_mal/farmr/base/ChildFragment.kt +++ b/app/src/main/java/com/appttude/h_mal/farmr/base/ChildFragment.kt @@ -15,7 +15,7 @@ import org.kodein.di.android.x.kodein import org.kodein.di.generic.instance import java.io.IOException -@Suppress("EmptyMethod", "EmptyMethod") +@Suppress("EmptyMethod") abstract class ChildFragment(@LayoutRes contentLayoutId: Int) : Fragment(contentLayoutId), KodeinAware { @@ -24,10 +24,12 @@ abstract class ChildFragment(@LayoutRes contentLayoutId: Int) lateinit var viewModel: V + private val parent by lazy { requireParentFragment().requireParentFragment() } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) viewModel = - ViewModelProvider(requireParentFragment().requireParentFragment(), factory)[getGenericClassAt(0).java] + ViewModelProvider(parent, factory)[getGenericClassAt(0).java] configureObserver() } @@ -58,11 +60,14 @@ abstract class ChildFragment(@LayoutRes contentLayoutId: Int) fun navigateParent(navArg: Any) { - val fragment = requireParentFragment().requireParentFragment() when(navArg) { - is Int -> (fragment).navigateTo(navArg) - is NavDirections -> (fragment).navigateTo(navArg) + is Int -> (parent).navigateTo(navArg) + is NavDirections -> (parent).navigateTo(navArg) else -> { throw IOException("${navArg::class} is not a valid navigation argment") } } } + + fun setTitle(title: String) { + (parent as BaseFragment<*>).setTitle(title) + } } \ No newline at end of file diff --git a/app/src/main/java/com/appttude/h_mal/farmr/ui/FragmentMain.kt b/app/src/main/java/com/appttude/h_mal/farmr/ui/FragmentMain.kt index 64ecf1d..fe992f2 100644 --- a/app/src/main/java/com/appttude/h_mal/farmr/ui/FragmentMain.kt +++ b/app/src/main/java/com/appttude/h_mal/farmr/ui/FragmentMain.kt @@ -64,16 +64,16 @@ class FragmentMain : BaseFragment(R.layout.fragment_main) { val navController = navHost.navController navController.setGraph(R.navigation.home_navigation) - navView.setOnNavigationItemSelectedListener { - setTitle(it.title.toString()) - true - } navView.setupWithNavController(navController) viewModel.getBottomBarState()?.let { navView.selectedItemId = it } + navController.addOnDestinationChangedListener { _, destination, _ -> + setTitle(destination.label.toString()) + } + view.findViewById(R.id.fab1).setOnClickListener { navigateTo(R.id.main_to_addItem) } diff --git a/app/src/main/res/navigation/home_navigation.xml b/app/src/main/res/navigation/home_navigation.xml index 429438e..51e09ab 100644 --- a/app/src/main/res/navigation/home_navigation.xml +++ b/app/src/main/res/navigation/home_navigation.xml @@ -7,11 +7,11 @@ \ No newline at end of file