在 Tab Widget 中使用 onPause、onRestart - Android

发布于 2024-10-04 19:50:00 字数 462 浏览 6 评论 0原文

我有一个位于 TabWidget 内的 ListView。当我在 ListView 上选择一个项目并转到子 ListView 时,TabWidget 消失。这很好,只是它会调用 onPause 方法,从而导致当我返回父 ListView 时调用 onRestart

我有 onRestart 设置来从服务器检索更新的数据,但我不希望每次用户返回到父 ListView 时都会发生这种情况。我只希望当应用程序从后台运行中恢复时调用 onRestart 。我尝试实现一个布尔变量来确定是否应该执行 onRestart 中的代码,但似乎没有办法避免这种影响。

有想法吗?

I have a ListView that is inside a TabWidget. When I select an item on the ListView and go to the child ListView, the TabWidget disappears. This is fine, except that it invokes the onPause method, and thus causes onRestart to be called when I return to the parent ListView.

I have onRestart setup to retrieve updated data from the server, but I do not want this to occur everytime the user returns to the parent ListView. I only want onRestart to be called when the app comes alive from running in the background. I have tried implementing a Boolean variable to determine if I should execute the code that is inside onRestart, but there doesn't seem to be a way to get around the effects of this.

Ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

忘东忘西忘不掉你 2024-10-11 19:50:00

您可以使用 startActivityForResult 触发您的子活动,并在 onActivityResult 中设置一个标志以不重新加载(当用户从​​详细信息页面返回到列表视图时应该调用该标志)。您将有一个成员变量(假设为 mReload),并在 onCreateonRestart 中将其设置为 true >,并设置为 onActivityResult 中的 false,然后在 mReload 为 true 时处理重新加载 onResume(并将其设置回来)为 false 因此正常的恢复不会触发重新加载)。

替代方案:只需在您的活动中该行的点击侦听器上设置一个标志 (mLeftPage)。重新启动时,如果 mLeftPage 为 true,则不重新加载列表并将 mLeftPage 设置回 false。否则,重新加载。

You could fire off your child activity with startActivityForResult and set a flag in onActivityResult to not reload (which should be called when the user backs into the listview from the detail page). You'd have a member variable (let's say mReload) that you'd set to true in onCreate and onRestart, and to false in onActivityResult, then process the reload onResume if mReload is true (and set it back to false so a normal resume won't trigger the reload).

Alternative: just set a flag (mLeftPage) in your activity on the row's click listener. On restart, if mLeftPage is true, don't reload the list and set mLeftPage back to false. Otherwise, reload.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文