我以前的应用是使用Fragments作为页面的。现在我将Jetpack Compose集成到我的应用中。页面如下所示:
HomePageFragment -〉使用传统XML创建的主页
ItemListPageFragment -〉一个片段 Package 了ComposeView,即所有内容都是由Compose完成的
ItemDetailPageFragment -〉使用传统XML创建的项目详细信息页面
以下是我想要达到的效果:
- 当进入ItemListPage时,显示加载,然后显示项目列表。然后用户向下滚动一点,选择一个项目,跳转到ItemDetailPage
- 当从ItemDetailPage返回到ItemListPage时,UI不应重新加载,而是停留在其离开的位置。
我的项目列表页面是这样的:
@Composable
fun Content(){
// third party lib that kind of like useSWR for React
val states = useRequest(fetcher = {....})
if(states.error) {...}
if(states.loading) {....}
// render list of items
....
}
现在,当我从ItemDetailPage返回到ItemListPage时,它会触发获取和加载UI。
我认为问题是片段在“页出”时破坏视图。然后当它“返回”页面时,它创建新的ComposeView并触发onLoad事件。
1条答案
按热度按时间thigvfpy1#
使用视图模型(https://developer.android.com/codelab/basic-android-kotlin-compose-viewmodel-and-state?继续= https%3A%2F%2F开发者. android.com%2F课程%2F路径%2Fandroid基础组合单元4路径-1% 23 codelab-https %3A%2F% 2F开发者. android.com%2Fcodelab%2F基本android-kotlin-compose-viewmodel-and-state #4)
或
使用rememberSavable,以便即使有任何配置更改也不会发生更改