view controller fixes
This commit is contained in:
parent
372750eee4
commit
bd9accacaa
|
|
@ -20,8 +20,9 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
api project(":navigation-viewcontroller")
|
implementation project(":navigation-base")
|
||||||
api project(":bottom-navigation-base")
|
implementation project(":navigation-viewcontroller")
|
||||||
|
implementation project(":bottom-navigation-base")
|
||||||
|
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package ru.touchin.roboswag.bottom_navigation_viewcontroller
|
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
|
import ru.touchin.roboswag.navigation_viewcontroller.viewcontrollers.ViewControllerNavigation
|
||||||
|
|
||||||
abstract class BottomNavigationActivity :
|
abstract class BottomNavigationActivity :
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import androidx.annotation.IdRes
|
||||||
import androidx.annotation.LayoutRes
|
import androidx.annotation.LayoutRes
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.FragmentManager
|
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
|
import ru.touchin.roboswag.navigation_viewcontroller.fragments.ViewControllerFragment
|
||||||
|
|
||||||
class BottomNavigationController(
|
class BottomNavigationController(
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package ru.touchin.roboswag.bottom_navigation_viewcontroller
|
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>() {
|
abstract class BottomNavigationFragment : BaseBottomNavigationFragment<NavigationTab>() {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package ru.touchin.roboswag.bottom_navigation_viewcontroller
|
package ru.touchin.roboswag.bottom_navigation_viewcontroller
|
||||||
|
|
||||||
import android.os.Parcelable
|
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.ViewController
|
||||||
import ru.touchin.roboswag.navigation_viewcontroller.viewcontrollers.ViewControllerNavigation
|
import ru.touchin.roboswag.navigation_viewcontroller.viewcontrollers.ViewControllerNavigation
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package ru.touchin.roboswag.bottom_navigation_viewcontroller
|
package ru.touchin.roboswag.bottom_navigation_viewcontroller
|
||||||
|
|
||||||
import android.os.Parcelable
|
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
|
import ru.touchin.roboswag.navigation_viewcontroller.viewcontrollers.ViewController
|
||||||
|
|
||||||
class NavigationTab(
|
class NavigationTab(
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,34 @@ package ru.touchin.lifecycle_viewcontroller.viewmodel
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
|
import androidx.lifecycle.LifecycleOwner
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
|
import androidx.lifecycle.ViewModelProviders
|
||||||
import ru.touchin.lifecycle.viewmodel.BaseLifecycleViewModelProviders
|
import ru.touchin.lifecycle.viewmodel.BaseLifecycleViewModelProviders
|
||||||
import ru.touchin.lifecycle.viewmodel.ViewModelFactoryProvider
|
import ru.touchin.lifecycle.viewmodel.ViewModelFactoryProvider
|
||||||
import ru.touchin.roboswag.navigation_viewcontroller.viewcontrollers.ViewController
|
import ru.touchin.roboswag.navigation_viewcontroller.viewcontrollers.ViewController
|
||||||
|
|
||||||
object LifecycleViewModelProviders : BaseLifecycleViewModelProviders() {
|
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.
|
* Returns ViewModelProvider.Factory instance from current lifecycleOwner.
|
||||||
* Search #ViewModelFactoryProvider are produced according to priorities:
|
* Search #ViewModelFactoryProvider are produced according to priorities:
|
||||||
|
|
@ -20,11 +41,8 @@ object LifecycleViewModelProviders : BaseLifecycleViewModelProviders() {
|
||||||
*/
|
*/
|
||||||
override fun getViewModelFactory(provider: Any): ViewModelProvider.Factory =
|
override fun getViewModelFactory(provider: Any): ViewModelProvider.Factory =
|
||||||
when (provider) {
|
when (provider) {
|
||||||
is ViewModelFactoryProvider -> provider.viewModelFactory
|
|
||||||
is ViewController<*, *> -> getViewModelFactory(provider.fragment)
|
is ViewController<*, *> -> getViewModelFactory(provider.fragment)
|
||||||
is Fragment -> getViewModelFactory(provider.parentFragment ?: provider.requireActivity())
|
else -> super.getViewModelFactory(provider)
|
||||||
is Activity -> getViewModelFactory(provider.application)
|
|
||||||
else -> throw IllegalArgumentException("View model factory not found.")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue