Android:在asynctask运行失败时替换片段

时间:2016-09-25 22:18:51

标签: android android-fragments android-asynctask

我有一个FrameLayout的主要活动,我根据(驻留)菜单选择动态更改碎片。最近(可能有一个新的SDK版本?)

我观察到当AsyncTask在当前片段(SwipeRefresh)上运行并且我想用另一个片段替换它时,现有片段保持可见(基本上onTop)并且新的一个被隐藏(可能在后面 - 我知道它在那里,因为它显示对话框或做东西,只是它没有显示)。在背面按下也会回到' root'但是,片段(标题栏也会更改文本),运行异步任务的片段会永久地挂在FrameLayout中(直到应用关闭)。任何帮助都非常感谢。 片段替换:

getSupportFragmentManager()
.beginTransaction().replace(R.id.container, targetFragment, "fragment")             .setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_OPEN).commit();

2 个答案:

答案 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?