2016-09-25 88 views
0

我有一個主要活動,其中FrameLayout,其中我動態更改基於(駐留)菜單選擇的片段。近期(可能與新的SDK版本?)Android:在asynctask運行失敗時替換片段

我觀察到,當AsyncTask是在當前片段(SwipeRefresh)運行,我想與另一個片段來取代它,現有的片段仍然顯示(onTop基本)和新的一個被隱藏(後面可能 - 我知道它在那裏,因爲它顯示對話框或做的東西,只是它沒有顯示)。然後回到'根'片段(標題欄更改文本),但是,與運行的異步任務一個永遠掛在那永久(直到應用程序關閉)FrameLayout。任何幫助真的很感激。 片段置換:

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

回答

1

我在這裏找到了解決方案:https://stackoverflow.com/a/27073879/5181489。到底是不是異步任務,我想,似乎問題出在SwipeRefreshLayout這固定它叫時:

if (refreshView != null) { 
    refreshView.setRefreshing(false); 
    refreshView.destroyDrawingCache(); 
    refreshView.clearAnimation(); 
} 
0

你試圖關閉正在運行的AsyncTask中的onPause或您的片段的onStop回調?

+0

感謝您的建議,我認爲這是問題。那麼,我試着,我不知道如何成功,但我在'onStop()'的任務上調用'cancel()',並檢查異步任務中的'isCancelled()'。 –