gpt4 book ai didi

java - 当方向改变时将对象从一个 fragment 传递到另一个 fragment

转载 作者:行者123 更新时间:2023-12-02 04:45:31 26 4
gpt4 key购买 nike

这似乎是一个重复的问题,但实际上类似问题的答案并没有解决我的问题:我正在制作一个游戏(幻灯片拼图),其中棋盘的状态(数字数组)很重要。因此,当方向更改时,我想从 fragment 1(仅在纵向模式下显示在屏幕上)保存该数组,并将其传递到 fragment 2(仅在横向模式下显示在屏幕上)。到目前为止,我设法得到了这个(在保存 fragment 的 Activity 的 onCreate 中):

GameFragment gameFragment = new GameFragment();
gameFragment.setArguments(getIntent().getExtras());

GameFragment9 gameFragment9 = new GameFragment9();
gameFragment9.setArguments(getIntent().getExtras());

if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, gameFragment, "fragmentGame")
.commit();
}
else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, gameFragment9, "fragmentGame9")
.commit();
}

我还学习了如何保存一个 fragment 的状态,但这并不完全是我想要的,因为我不想重建最后一个 fragment ,只需放置一个包含第一个 fragment 信息的新 fragment 。我正在考虑使用 onConfigChange 来检测屏幕何时发生变化并执行某些操作,但不知道如何执行该操作。

最佳答案

ViewModel 可以回答您的问题。创建数字列表并用 LiveData 包装它(可选)。通过 ViewModel 获取数字并通过 ViewModel 保存它们。在 onViewCreated 内部设置来自 ViewModel 的文本。喜欢

textView.text = viewModel.numbers

Only important thing is exactly same ViewModel should be used inside activity and its child fragments

您可以通过在 ViewModel 初始化期间向 ViewModel 提供相同的所有者来实现此目的

关于java - 当方向改变时将对象从一个 fragment 传递到另一个 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56487311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com