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