diff --git a/tabbar-navigation/src/main/java/ru/touchin/roboswag/components/tabbarnavigation/BaseNavigationFragment.kt b/tabbar-navigation/src/main/java/ru/touchin/roboswag/components/tabbarnavigation/BaseNavigationFragment.kt index f8fd53b..389605e 100644 --- a/tabbar-navigation/src/main/java/ru/touchin/roboswag/components/tabbarnavigation/BaseNavigationFragment.kt +++ b/tabbar-navigation/src/main/java/ru/touchin/roboswag/components/tabbarnavigation/BaseNavigationFragment.kt @@ -22,6 +22,8 @@ abstract class BaseNavigationFragment : Fragment() { abstract fun getContentContainerId(): Int + abstract fun getContentContainerLayoutId(): Int + abstract fun getTopLevelViewControllerId(): Int abstract fun wrapWithNavigationContainer(): Boolean @@ -37,6 +39,7 @@ abstract class BaseNavigationFragment : Fragment() { fragmentManager = childFragmentManager, viewControllers = getNavigationViewControllers(), contentContainerViewId = getContentContainerId(), + contentContainerLayoutId = getContentContainerLayoutId(), topLevelViewControllerId = getTopLevelViewControllerId(), wrapWithNavigationContainer = wrapWithNavigationContainer(), onReselectListener = getReselectListener() diff --git a/tabbar-navigation/src/main/java/ru/touchin/roboswag/components/tabbarnavigation/BottomNavigationController.kt b/tabbar-navigation/src/main/java/ru/touchin/roboswag/components/tabbarnavigation/BottomNavigationController.kt index dcfe17f..e2a8618 100644 --- a/tabbar-navigation/src/main/java/ru/touchin/roboswag/components/tabbarnavigation/BottomNavigationController.kt +++ b/tabbar-navigation/src/main/java/ru/touchin/roboswag/components/tabbarnavigation/BottomNavigationController.kt @@ -20,6 +20,7 @@ class BottomNavigationController( private val fragmentManager: FragmentManager, private val viewControllers: SparseArray>, Parcelable>>, private val contentContainerViewId: Int, + private val contentContainerLayoutId: Int, private val wrapWithNavigationContainer: Boolean = false, @IdRes private val topLevelViewControllerId: Int = 0, // If it zero back press with empty fragment back stack would close the app private val onReselectListener: (() -> Unit)? = null @@ -86,7 +87,7 @@ class BottomNavigationController( Fragment.instantiate( context, NavigationContainerFragment::class.java.name, - NavigationContainerFragment.args(viewControllerClass, viewControllerState, contentContainerViewId) + NavigationContainerFragment.args(viewControllerClass, viewControllerState, contentContainerViewId, contentContainerLayoutId) ) } else { Fragment.instantiate( diff --git a/tabbar-navigation/src/main/java/ru/touchin/roboswag/components/tabbarnavigation/NavigationContainerFragment.kt b/tabbar-navigation/src/main/java/ru/touchin/roboswag/components/tabbarnavigation/NavigationContainerFragment.kt index 59d75e0..c060197 100644 --- a/tabbar-navigation/src/main/java/ru/touchin/roboswag/components/tabbarnavigation/NavigationContainerFragment.kt +++ b/tabbar-navigation/src/main/java/ru/touchin/roboswag/components/tabbarnavigation/NavigationContainerFragment.kt @@ -16,17 +16,20 @@ class NavigationContainerFragment : Fragment() { private const val VIEW_CONTROLLER_CLASS_ARG = "VIEW_CONTROLLER_CLASS_ARG" private const val VIEW_CONTROLLER_STATE_ARG = "VIEW_CONTROLLER_STATE_ARG" private const val CONTAINER_VIEW_ID_ARG = "CONTAINER_VIEW_ID_ARG" + private const val CONTAINER_LAYOUT_ID_ARG = "CONTAINER_LAYOUT_ID_ARG" private const val TRANSITION_ARG = "TRANSITION_ARG" fun args( cls: Class>, state: Parcelable, containerViewId: Int, + containerLayoutId: Int, transition: Int = FragmentTransaction.TRANSIT_NONE ) = Bundle().apply { putSerializable(VIEW_CONTROLLER_CLASS_ARG, cls) putParcelable(VIEW_CONTROLLER_STATE_ARG, state) putInt(CONTAINER_VIEW_ID_ARG, containerViewId) + putInt(CONTAINER_LAYOUT_ID_ARG, containerLayoutId) putInt(TRANSITION_ARG, transition) } } @@ -42,6 +45,8 @@ class NavigationContainerFragment : Fragment() { private var containerViewId = 0 + private var containerLayoutId = 0 + private var transition = 0 @Suppress("UNCHECKED_CAST") @@ -54,6 +59,7 @@ class NavigationContainerFragment : Fragment() { val args = arguments ?: return with(args) { containerViewId = getInt(CONTAINER_VIEW_ID_ARG) + containerLayoutId = getInt(CONTAINER_LAYOUT_ID_ARG) transition = getInt(TRANSITION_ARG) } navigation.setInitialViewController(getViewControllerClass(), args.getParcelable(VIEW_CONTROLLER_STATE_ARG)) @@ -61,6 +67,6 @@ class NavigationContainerFragment : Fragment() { } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? = - inflater.inflate(containerViewId, container, false) + inflater.inflate(containerLayoutId, container, false) }