【发布时间】:2013-12-26 09:28:50
【问题描述】:
我有一个包含 3 个标签的活动。选项卡 A、选项卡 B、选项卡 C。选项卡 A 从服务器加载数据。选项卡 B 和 C 上有带有按钮的文本字段。每个选项卡都使用不同的片段实现。
我的问题是当我在选项卡 B 中的文本字段上键入并滑动到选项卡 C 时,选项卡 B 中的文本字段未清除。我希望它被清除。当我滑动到选定的标签时,有没有办法重新创建或重新加载片段?
Tab A 完成从服务器加载数据需要一些时间,因此我在操作运行时创建了一个进度对话框。现在进度对话框正常工作,但是如果我从 Tab A 滑动到 Tab B 再到 Tab C 返回到 Tab B,则会显示进度对话框。进度对话框显示在 Tab A 片段的 onCreateView() 方法中。我不明白这怎么可能。我认为这是因为即使我在不同的选项卡上,这些片段仍在运行。当用户滑动到选定的选项卡时,片段是否可能仅运行/启动?另外,我应该在onTabUnSelected() 方法中运行任何代码吗?有没有办法在该方法中结束片段?
编辑:
我想出了如何在离开片段时清除文本字段。我覆盖了以下内容: 公共类 MyFragment 扩展了 Fragment
@Override
public void setMenuVisibility(final boolean visible) {
super.setMenuVisibility(visible);
if (!visible) {
...
}
}
现在,当我在标签之间滑动时,文本字段会被清除。我不确定这是否是解决问题的最佳方法,所以如果其他人有更好的方法,请告诉我。我尝试在另一个片段中实现相同的功能以在片段不可见时关闭对话框,但它不起作用。
编辑 2:
由于某种原因,片段 A 的 onCreateView() 方法在从选项卡 C 滑动到选项卡 B 时正在运行。片段 A 加载到选项卡 A 上。片段 A 的 onCreateView() 方法不应该仅在以下情况下运行选项卡 A 被选中?
编辑 3:
我发现了问题所在。 Android 自动将setOffscreenPageLimit(int) 的值设置为setOffscreenPageLimit(1)。这会自动在后台加载下一个选项卡。因此,作为一种解决方法,我将在屏幕本身上创建一个进度条/微调器,而不是创建一个进度对话框。
【问题讨论】:
标签: android android-fragments tabs fragment android-tabs