view controller fixes
This commit is contained in:
parent
372750eee4
commit
bd9accacaa
|
|
@ -20,8 +20,9 @@ android {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
api project(":navigation-viewcontroller")
|
||||
api project(":bottom-navigation-base")
|
||||
implementation project(":navigation-base")
|
||||
implementation project(":navigation-viewcontroller")
|
||||
implementation project(":bottom-navigation-base")
|
||||
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package ru.touchin.roboswag.bottom_navigation_viewcontroller
|
||||
|
||||
import ru.touchin.roboswag.bottom_navigation_fragment.BaseBottomNavigationActivity
|
||||
import ru.touchin.roboswag.bottom_navigation_base.BaseBottomNavigationActivity
|
||||
import ru.touchin.roboswag.navigation_viewcontroller.viewcontrollers.ViewControllerNavigation
|
||||
|
||||
abstract class BottomNavigationActivity :
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import androidx.annotation.IdRes
|
|||
import androidx.annotation.LayoutRes
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import ru.touchin.roboswag.bottom_navigation_fragment.BaseBottomNavigationController
|
||||
import ru.touchin.roboswag.bottom_navigation_base.BaseBottomNavigationController
|
||||
import ru.touchin.roboswag.navigation_viewcontroller.fragments.ViewControllerFragment
|
||||
|
||||
class BottomNavigationController(
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package ru.touchin.roboswag.bottom_navigation_viewcontroller
|
||||
|
||||
import ru.touchin.roboswag.bottom_navigation_fragment.BaseBottomNavigationFragment
|
||||
import ru.touchin.roboswag.bottom_navigation_base.BaseBottomNavigationFragment
|
||||
|
||||
abstract class BottomNavigationFragment : BaseBottomNavigationFragment<NavigationTab>() {
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package ru.touchin.roboswag.bottom_navigation_viewcontroller
|
||||
|
||||
import android.os.Parcelable
|
||||
import ru.touchin.roboswag.bottom_navigation_fragment.BaseNavigationContainerFragment
|
||||
import ru.touchin.roboswag.bottom_navigation_base.BaseNavigationContainerFragment
|
||||
import ru.touchin.roboswag.navigation_viewcontroller.viewcontrollers.ViewController
|
||||
import ru.touchin.roboswag.navigation_viewcontroller.viewcontrollers.ViewControllerNavigation
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package ru.touchin.roboswag.bottom_navigation_viewcontroller
|
||||
|
||||
import android.os.Parcelable
|
||||
import ru.touchin.roboswag.bottom_navigation_fragment.BaseNavigationTab
|
||||
import ru.touchin.roboswag.bottom_navigation_base.BaseNavigationTab
|
||||
import ru.touchin.roboswag.navigation_viewcontroller.viewcontrollers.ViewController
|
||||
|
||||
class NavigationTab(
|
||||
|
|
|
|||
|
|
@ -2,13 +2,34 @@ package ru.touchin.lifecycle_viewcontroller.viewmodel
|
|||
|
||||
import android.app.Activity
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.ViewModelProviders
|
||||
import ru.touchin.lifecycle.viewmodel.BaseLifecycleViewModelProviders
|
||||
import ru.touchin.lifecycle.viewmodel.ViewModelFactoryProvider
|
||||
import ru.touchin.roboswag.navigation_viewcontroller.viewcontrollers.ViewController
|
||||
|
||||
object LifecycleViewModelProviders : BaseLifecycleViewModelProviders() {
|
||||
|
||||
/**
|
||||
* Creates a {@link ViewModelProvider}, which retains ViewModels while a scope of given
|
||||
* {@code lifecycleOwner} is alive. More detailed explanation is in {@link ViewModel}.
|
||||
* <p>
|
||||
* It uses the given {@link Factory} to instantiate new ViewModels.
|
||||
*
|
||||
* @param lifecycleOwner a lifecycle owner, in whose scope ViewModels should be retained (ViewController, Fragment, Activity)
|
||||
* @param factory a {@code Factory} to instantiate new ViewModels
|
||||
* @return a ViewModelProvider instance
|
||||
*/
|
||||
override fun of(
|
||||
lifecycleOwner: LifecycleOwner,
|
||||
factory: ViewModelProvider.Factory
|
||||
): ViewModelProvider =
|
||||
when (lifecycleOwner) {
|
||||
is ViewController<*, *> -> ViewModelProviders.of(lifecycleOwner.fragment, factory)
|
||||
else -> super.of(lifecycleOwner, factory)
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns ViewModelProvider.Factory instance from current lifecycleOwner.
|
||||
* Search #ViewModelFactoryProvider are produced according to priorities:
|
||||
|
|
@ -20,11 +41,8 @@ object LifecycleViewModelProviders : BaseLifecycleViewModelProviders() {
|
|||
*/
|
||||
override fun getViewModelFactory(provider: Any): ViewModelProvider.Factory =
|
||||
when (provider) {
|
||||
is ViewModelFactoryProvider -> provider.viewModelFactory
|
||||
is ViewController<*, *> -> getViewModelFactory(provider.fragment)
|
||||
is Fragment -> getViewModelFactory(provider.parentFragment ?: provider.requireActivity())
|
||||
is Activity -> getViewModelFactory(provider.application)
|
||||
else -> throw IllegalArgumentException("View model factory not found.")
|
||||
else -> super.getViewModelFactory(provider)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue