我有一个FrameLayout
的主要活动,我根据(驻留)菜单选择动态更改碎片。最近(可能有一个新的SDK版本?)
我观察到当AsyncTask
在当前片段(SwipeRefresh
)上运行并且我想用另一个片段替换它时,现有片段保持可见(基本上onTop
)并且新的一个被隐藏(可能在后面 - 我知道它在那里,因为它显示对话框或做东西,只是它没有显示)。在背面按下也会回到' root'但是,片段(标题栏也会更改文本),运行异步任务的片段会永久地挂在FrameLayout
中(直到应用关闭)。任何帮助都非常感谢。
片段替换:
getSupportFragmentManager()
.beginTransaction().replace(R.id.container, targetFragment, "fragment") .setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_OPEN).commit();
答案 0 :(得分:1)
我在这里找到了解决方案:https://stackoverflow.com/a/27073879/5181489。最后它并不像我想象的那样是异步任务,似乎问题出在SwipeRefreshLayout
上,这在onPause
中调用时修复了它:
if (refreshView != null) {
refreshView.setRefreshing(false);
refreshView.destroyDrawingCache();
refreshView.clearAnimation();
}
答案 1 :(得分:0)
您是否尝试在片段的onPause或onStop回调中关闭正在运行的AsyncTask?