Android,在已分离的fragment中无法访问ViewModels。
创始人
2024-10-13 08:30:34
0

在已分离的 fragment 中无法直接访问 ViewModels,因为 detach() 方法不会销毁 fragment,只是将其与 activity 分离。因此我们需要使用一个技巧来解决这个问题。

首先,在 fragment 中创建一个新的 ViewModelProvider。然后,使用 getActivity() 方法获取 activity,再使用它的 ViewModelProvider 获取 ViewModel。最后,在 fragment 中使用 ViewModelProvider 将其与新的 ViewModel 关联起来,使其与 activity 中的相同。

例如,在已分离的 fragment 中访问与 activity 相关联的 ViewModel 的代码如下:

public class MyFragment extends Fragment {
    private MyViewModel mMyViewModel;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Create a new ViewModelProvider
        ViewModelProvider viewModelProvider = new ViewModelProvider(getActivity());

        // Get the ViewModel from the activity's ViewModelProvider
        mMyViewModel = viewModelProvider.get(MyViewModel.class);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.my_fragment, container, false);

        // Connect the ViewModel to the new fragment
        viewModelProvider(getActivity()).get(MyViewModel.class).addFragment(this);

        // Use the ViewModel as needed...

        return view;
    }

    @Override
    public void onDestroy() {
        // Disconnect the ViewModel from the fragment
        viewModelProvider(getActivity()).get(MyViewModel.class).removeFragment(this);

        super.onDestroy();
    }
}

这样,在已分离的 fragment 中就可以访问与 activity 相关联的 ViewModel 了。

相关内容

热门资讯

据统计!pokemomo辅助软... 据统计!pokemomo辅助软件,八张透视辅助,演示教程(有挂细节)1、全新机制【八张透视辅助ai辅...
明白辅助挂!红龙poker作弊... 明白辅助挂!红龙poker作弊指令,奇迹脚本辅助,大纲教程(有挂方针)1、游戏颠覆性的策略玩法,独创...
目前!德州圈脚本,德普之星辅助... 目前!德州圈脚本,德普之星辅助器,积累教程(真的有挂)1、操作简单,无需德普之星辅助器手机版透视脚本...
相较于以往!智星菠萝有挂吗,来... 相较于以往!智星菠萝有挂吗,来来拼十辅助免费辅助,方针教程(存在有挂)1、首先打开来来拼十辅助免费辅...
据通报!德扑之心免费透视,广东... 据通报!德扑之心免费透视,广东雀神挂机怎么样,步骤教程(有挂方略)1、该软件可以轻松地帮助玩家将广东...
有玩家发现!aapoker真的... 有玩家发现!aapoker真的假的,闲聚辅助器,绝活儿教程(讲解有挂)1)闲聚辅助器免费钻石:进一步...
方法辅助挂!德州局脚本,博雅红... 方法辅助挂!德州局脚本,博雅红河西元红河挂,方式教程(有挂讲解)1、博雅红河西元红河挂免费辅助多个强...
有玩家发现!扑克之星辅助,jj... 有玩家发现!扑克之星辅助,jj斗地主外卦,讲义教程(有挂分析)1、进入到jj斗地主外卦是否有挂之后,...
黑科技辅助挂!hhpoker辅... 黑科技辅助挂!hhpoker辅助,陕麻圈辅助开挂软件,妙招教程(有挂详情);1、下载好陕麻圈辅助开挂...
为切实保障!epoker透视底... 为切实保障!epoker透视底牌,哈局八张辅助,总结教程(有挂方略)1、该软件可以轻松地帮助玩家将哈...