我成功地实现了基于存储库的MVVM。但是,我需要在片段之间传递一个类对象。我在多个片段之间实现了一个sharedViewModel,但是set值总是给出null。我知道这是因为我没有将活动上下文传递给片段中的视图模型的初始化。我正在使用ModelFactory来创建视图模型的实例,但是我无法找到给出'applicationActivity()‘的方法。
这是我的modelFactory:
class MyViewModelFactory constructor(private val repository: MyRepository): ViewModelProvider.Facto
我有以下几个类: The ViewModel class MealPlanViewModel @AssistedInject constructor(private val mealPlanRepository: MealPlanRepository, @Assisted private val canteenId: String) : ViewModel() {
// AssistedInject code for using ViewModel injection with runtime parameters
@AssistedInject.Factory
我有12个片段UpcomingGamesFragment在一年中的每个月重复12次,各自的片段显示了该月发布的游戏。例如,第一个月将显示游戏在2019年1月发布,下一个片段将在2019年2月发布,等等。
我正在尝试构建的是一个使用ViewModel的架构。一个将在我所有的12个片段之间共享的ViewModel,它将触发(通过LiveData)所有片段的数据更改,但是我不知道如何使用这个ViewModel类来完成对所有可见片段的更新,下面是我的UpcomingGamesFragment类和请求月份数据方法:
public class UpcomingGamesFragment extends F
我正在练习Google ,有一个链接片段和ViewModel的问题。
google演示程序如下所示:
在活动中,
Fragment.newInstance()
new ViewModel()
fragment.setViewModel(viewModel). (Implementing a setViewModel method in Fragment)
viewmodel.loadingData() in fragment's onResume or onStart
我的问题是,这似乎不安全。如果由于某种原因,系统回收片段并使用默认构造函数重新创建,viewM
我有一个包含父片段的活动。在父片段内部是2个子片段。我只想创建一个视图模型实例,并在两个子片段中使用它。 这是我在父片段中的代码: val factory = ViewModelFactory.getInstance(requireContext())
viewModel = ViewModelProvider(this, factory)[FavoriteViewModel::class.java] 下面是子片段中的一个: viewModel = (requireParentFragment() as FavoriteParentFragment).viewModel // force c
我想为我现有的片段创建一个MainFragment,并为每个提供by viewModels<FragmentName::class>()的片段创建一个ViewModel对象,如下所示:
class MainFragment<VM: ViewModel>: Fragment() {
private val viewModel by viewModels<VM::class>()
}
但我知道这个错误:
Cannot use 'VM' as reified type parameter. Use a class instead.
这就是我
我是Android开发和制作Android地图应用程序的新手。现在,我有三个片段:一个是地图,两个是位置的回收器视图列表。所有这些都在我的主要活动中的导航主机中。我想要做的是单击列表中的位置,它会将我带到地图片段并在地图上放置一个标记。
我的想法是在我的列表片段中设置视图模型,并在我的映射片段中获取视图模型。
我的视图模型:
private val _location = MutableLiveData<Location>()
val location: LiveData<Location> = _location
fun setLocation(location:
我刚刚学会了手动依赖注入,但我正在尝试使用Hilt来处理这些依赖注入。
我想将ViewModel注入到Fragment中。该片段包含在一个Activity中。现在,我已经将注释添加到Application、Activity和Fragment中。
@HiltAndroidApp
class MovieCatalogueApplication : Application()
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
...
}
@AndroidEntryPoint
class HomeFragment : F
我正在使用导航组件,我在应用程序中有一个有这么多片段的活动。我试图使用一个视图模型,该模型的作用域是所有片段中的活动,但它只在嵌套在我的主片段中的3个片段中工作。主片段是导航主机片段,它使用视图寻呼机添加3个选项卡,这3个选项卡是主片段中的3个片段。例如,我有三个选项卡A,B,C。在这三个表之间,我可以成功地共享视图模型中的数据。‘有一个细节片段,让我们称之为D。当我试图在D中访问共享viewModel时,它有空值,我知道我已经在A中设置了它。我有一个普通的视图模型类。在每个片段中,我实例化视图模型如下
private val viewModel: MainActivityViewModel
我有一个名为Homeactivity的Activity,我有一个片段Notification和它们的ViewModel类,我想从片段的ViewModel更新通知计数,并且我在通知ViewModel外部声明了该接口,但我无法在Kotlin中调用该接口的方法
class NotificationsViewModel(val notificationsActivity: HomeActivity) :
BaseObservable() {
//somewhere i want to update count which is in homeactivity
我有一个活动应该显示一个非固定数量的碎片。每个片段将接收MutableList of Customer的一个元素,并且它需要将其组件绑定到这个Customer类中的一个属性。
我创建了这样的类:
class Customer constructor(
val name: LiveData<String>
val email: LiveData<String>
)
在我的ViewModel中,我创建了MutableList of Customer
class CustomerViewModel: ViewModel() {
val custome
Activity-Fragment重新创建的例子:我在activity级别上从Activitycontext创建ViewModel,并试图使用ViewModelProvider.of()在Fragment级别访问初始化的ViewModel。
下面的代码在愉快的情况下工作;但是当活动被重新创建(更改系统语言或权限)时,相同的代码不能工作,片段无法访问创建的活动viewModel。
ViewModel是参数化的,只有一个主构造函数,并且使用ViewModelProvider.Factory初始化。
ViewModel结构
class MessageViewModel(var message: Mu