viewmodel 相关问题

视图模型或视点框架是一个框架,它定义了一系列用于构建体系结构的视图。视图是从一组相关关注点的角度表示整个系统。

为什么Android Developer文档说明Activity的onDestroy是在ViewModel的onCleared之前调用的?

我使用调试点来弄清楚ViewModel的onCleared和Activity的onDestroy()的顺序。 因为 ComponentActivity 类有下面的代码,我知道 ViewModel 的 onCleared() 被调用,然后

回答 1 投票 0

Compose 桌面上缺少主调度程序

尝试将Jetpack ViewModel集成到KMP项目中。 使用以下配置,无法编译桌面应用程序(错误如下)。 库.版本.toml androidxLifecycle = "2.8.0" koin-

回答 1 投票 0

XFC0045 绑定:在“EcoTracker.ViewModels.UserProfileViewModel”上找不到属性“标题”

我使用 ViewModel 在个人资料页面上显示用户信息和帖子,但在尝试从 UserPosts 集合中获取这些帖子时出现错误 内容页.xaml: 我使用 ViewModel 在个人资料页面上显示用户信息和帖子,但在尝试从 UserPosts 集合中获取这些帖子时出现错误 内容页.xaml: <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:viewModels="clr-namespace:EcoTracker.ViewModels" xmlns:converters="clr-namespace:EcoTracker.Converters" x:DataType="viewModels:UserProfileViewModel" Title="Мой профиль" x:Class="EcoTracker.Views.UserProfilePage"> <ContentPage.Content> <StackLayout> <Image Source="{Binding User.Avatar}" WidthRequest="100" HeightRequest="100" HorizontalOptions="Center" /> </StackLayout> <ListView x:Name="UserPostsListView" ItemsSource="{Binding UserPosts}" HasUnevenRows="True" VerticalOptions="FillAndExpand"> <ListView.ItemTemplate> <DataTemplate> <ViewCell> <Frame HasShadow="True" Margin="10" Padding="10" BackgroundColor="White" CornerRadius="15"> <StackLayout VerticalOptions="FillAndExpand"> <Label Text="{Binding Title}" FontAttributes="Bold" FontSize="16" /> </Frame> </ViewCell> </DataTemplate> </ListView.ItemTemplate> </ListView> ContentPage.xaml.cs: public partial class UserProfilePage : ContentPage { private readonly UserProfileViewModel viewModel; public UserProfilePage() { InitializeComponent(); viewModel = new UserProfileViewModel(); BindingContext = viewModel; } protected override async void OnAppearing() { base.OnAppearing(); await viewModel.LoadUserDataAndPostsAsync(); } } 视图模型: public class UserProfileViewModel { private UserData _user; public UserData User { get { return _user; } set { _user = value; OnPropertyChanged(nameof(User)); } } private ObservableCollection<UserPostModel> _userPosts; public ObservableCollection<UserPostModel> UserPosts { get { return _userPosts; } set { _userPosts = value; OnPropertyChanged(nameof(UserPosts)); } } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } public async Task LoadUserDataAndPostsAsync() { User = UserDataHolder.GetUserData(); int userId = User.Id; UserPosts = new ObservableCollection<UserPostModel>(await GetUserPostsAsync(userId)); if (User == null) { User = new UserData(); } int followersCount = await GetFollowersCountAsync(userId); if (followersCount >= 0) { User.FollowersCount = followersCount; } int followingCount = await GetFollowingCountAsync(userId); if (followingCount >= 0) { User.FollowingCount = followingCount; } } } 我看到删除DataType的决定,然后错误消失了,但是页面上既没有显示用户数据也没有发布数据 您需要在模板中添加 DataType <DataTemplate x:DataType="viewModels:UserPosts"> 您可能还需要使用不同的xmlns,具体取决于您的代码结构

回答 1 投票 0

在片段重新创建期间使用片段中的 StateFlow 防止 Snackbar 或 Toast 显示多次

我正在开发一个 Android 项目,该项目有一个带有底部导航栏和导航组件的 MainActivity。主要活动包含四个片段:主页、聊天、通知和个人资料。该...

回答 1 投票 0

Jetpack ViewModel 无法编译为 jvm 桌面到 KMP 项目中

尝试将Jetpack ViewModel集成到KMP项目中。 使用以下配置,无法编译桌面应用程序(错误如下)。 库.版本.toml androidxLifecycle = "2.8.0" koin-

回答 1 投票 0

我收到 java.lang.NullPointerException 我认为不应该是这样。有人可以帮我吗?

我有一个接口,它从实现它的活动传递到视图模型。然后在viewmodel中,调用实现的接口方法。在这个方法中,我想做的就是

回答 1 投票 0

Jetpack Compose - 未解析的参考:observeAsState

我正在学习 Jetpack Compose,我正在尝试为我的 @Composable 制作一个视图模型。 在文档(https://developer.android.com/codelabs/jetpack-compose-state#3)中用于观察

回答 4 投票 0

将视图模型传递到回收器视图适配器中会导致内存泄漏吗?

目前我正在试验视图模型,想知道将视图模型传递给 recyclerview 适配器是否会导致内存泄漏?适配器中视图模型的唯一目的是提供...

回答 1 投票 0

Kotlin Android 项目在 ViewModel 中使用数据类

我想在我的 MainViewModel 中使用我的数据类 AuthData。 de.hsfl.appamigos.capturetheflag 包 导入 androidx.lifecycle.MutableLiveData 数据类 AuthData(var game: MutableLiveData 我想在我的 MainViewModel 中使用我的数据类 AuthData。 package de.hsfl.appamigos.capturetheflag import androidx.lifecycle.MutableLiveData data class AuthData(var game: MutableLiveData<String>) package de.hsfl.appamigos.capturetheflag import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel class MainViewModel: ViewModel() { private val authData: MutableLiveData<AuthData> = MutableLiveData() fun getGame(): LiveData<AuthData> = authData fun setGame(newAuthData: AuthData) { authData.value?.game = newAuthData.game } fun startNewGame(text: String){ val newGame = MutableLiveData("1234") val newAuthData = AuthData(newGame) setGame(newAuthData) } } 当我尝试观察我的片段之一的变化时,它没有得到通知。 package de.hsfl.appamigos.capturetheflag import android.os.Bundle import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController import de.hsfl.appamigos.capturetheflag.databinding.FragmentLobbyBinding class LobbyFragment : Fragment() { ... val mainViewModel: MainViewModel by activityViewModels() override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { // Inflate the layout for this fragment //val root = inflater.inflate(R.layout.fragment_lobby, container, false) val binding = FragmentLobbyBinding.inflate(inflater) val naviGraph = findNavController() mainViewModel.getGame().observe(viewLifecycleOwner) { binding.textViewGameID.text = it.game.toString() } ... return binding.root; //return inflater.inflate(R.layout.fragment_lobby, container, false) } } 我尝试取出数据类,只使用可变的,并且工作正常,所以它的所有连接都有点正确。 我想这是因为 authData 没有改变,但属性游戏改变了。如何观察属性本身的变化? 我无法解决数据类问题,因为这是我的教授要求的,我可以使用普通类,但我看不出这有什么帮助。 我猜这是因为 authData 没有改变,但属性游戏改变了。 正是如此。 如何观察属性本身的变化? 观察属性本身。 mainViewModel.getGame().game.observe(viewLifecycleOwner) { binding.textViewGameID.text = it.game.toString() } 或者更新当前观察到的整个对象。 fun setGame(newAuthData: AuthData) { //authData.value?.game = newAuthData.game authData.value = newAuthData } 附注- 你的方法名称很混乱。获取并设置“游戏” 获取并设置一个“AuthData”,它本身有一个“游戏”?如果您要获取并设置“AuthData”,只需将其称为 getAuthData 和 setAuthData。

回答 1 投票 0

Koin:使用接口/抽象类从父片段获取视图模型的实例

我声明了一个抽象视图模型(比方说AnimalsViewModel),两个视图模型扩展了它(DogViewModel,CatViewModel) 相应的片段(DogFragment、CatFragment)托管一个公共片段(

回答 1 投票 0

为什么我的 WPF 应用程序首次启动时显示 ViewModel 的类名而不是其内容(属性)?

我将 MainWindowViewModel 绑定到 MainWindow 的 DataContext。 然后我将此 MainWindowViewModel 初始化为特定的 itemsPageViewModel。 问题是在启动时我看到 itemsPageViewMode...

回答 2 投票 0

使用 mvvm 和 jetpackcompose 在 android 中查看模型

我是 MVVM 新手,正在尝试创建一个应用程序。 该应用程序有 4 个不同的部分: 个人资料(登录 - 编辑个人资料等) 类别(显示猫和子猫) 项目(显示所有项目,单个项目页面,

回答 1 投票 0

如何从视图模型类设置代码隐藏属性?

我从我的内容页面调用视图模型类中的方法,如下所示: 命令=“{绑定GetDbsCommand}” 通过这个方法,我希望它在我的代码隐藏中设置一个属性...

回答 1 投票 0

为什么在回调中调用ViewModel时会发生重组?

我完全混淆了撰写概念。 我有一个代码 @可组合 有趣的 HomeScreen(viewModel: HomeViewModel = getViewModel()) { 脚手架{ val isTimeEnable 通过 viewModel.isTimerEnable。

回答 3 投票 0

模块中共享 ViewModel

我有一个 Activity,下面有多个片段。我想与共享视图模型共享数据,但它们都位于不同的模块中。我无法获取 ActivityViewModel 类。当我收到

回答 1 投票 0

每次我尝试注册一个新对象时,它都会返回到数据库为空或 null。我该怎么办?

我认为我的视图模型正在从未加载页面的空字段中获取值,或者根本没有获取,只是从模型中获取。 查看型号: 命名空间 Projeto_Vendores.Models.ViewModels { ...

回答 1 投票 0

每次我尝试注册一个新对象时,它都会返回到数据库为空或 null。我该怎么办?

我认为我的 ViewModel 正在从未加载页面的空字段中获取值,或者根本没有获取值,只是从模型中获取: 视图模型: 命名空间 Projeto_Vendores.Models.ViewModels { 噗...

回答 1 投票 0

将数据传递到 Swift 中的 ViewModel

我对 SwiftUI 和在 XCode 上开发应用程序相当陌生。我对其他语言有很好的经验,但我很难理解一些事情。 基本上我有一个 ViewModel 设置为...

回答 1 投票 0

ViewModel 可以有 @Composable 函数吗?

我有一个 ViewModel 类定义如下: 类 MainActivityViewModel : ViewModel() { 私有 val _count = MutableStateFlow(0) val count = _count.asStateFlow() 有趣的increaseCount() {...

回答 1 投票 0

哪个更好? viewModelScope.launch 还是 LaunchedEffect?

因此,对于基于视图模型的撰写应用程序,这是 调用和使用挂起函数的更好方法?拉它要么通过 viewModelScope.launch 还是 LaunchedEffect?

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.