22

在我的应用程序中,我有标签栏功能。在一个选项卡中,我在 lisview 中显示服务器数据,单击该列表项的详细信息页面将在新片段中打开。

但是当我从该详细信息页面按下后退按钮时,每次 oncreateview 调用上一页,所以每次创建 listview 并 new 获取新的服务器数据。那么如何防止这种情况并在按下后退按钮时只显示以前的状态?

4

3 回答 3

45

我知道给出这个答案已经太久了,但我猜你正在用另一个片段替换你的片段。我的意思是说你正在使用

ft.replace(R.id.realTabContent, fragment);

移动到您在 onItemClick 中使用的其他片段,因此使用简单的解决方案

ft.add(R.id.realTabContent, fragment);

而不是替换你的片段。

了解replaceadd之间的区别。这将解决您的问题。

Replace :它将替换原始片段并在您回来时重新创建视图
Add :它只会将一个新片段添加到堆栈中。

希望这会帮助面临同样问题的人......

于 2014-10-10T10:44:08.410 回答
6

我认为阻止调用 onCreateView 不是一个好主意,如果不调用该函数,就会有异常,所以不,你不应该。而不是这样做,我建议您将“创建的列表视图和新的获取新服务器数据”移动到另一个可以显式调用的地方(当你想要的时候,你想要onCreate()的地方是一个好地方),不要把它放在onCreateView(). 希望这可以帮助。

于 2013-08-09T05:38:48.330 回答
-1

您应该将数据对象与视图变量分开缓存,因为如果您从服务器获取任何数据并且不想再次调用,则需要更新它们的引用,然后使用分支来分支该代码。

创建一个 init() 方法,您可以在其中执行所有初始化和服务器调用,并在您不想调用 init() 时从逻辑上将调用分支到 init() 方法。

于 2013-08-09T05:58:30.273 回答