2016-09-25 7 views
0

FrameLayoutという主要なアクティビティがあります。ここでは、メニュー選択に基づいてフラグメントを動的に変更します。最近(多分新しいSDKのバージョンと?)Android:asynctaskの実行に失敗したときにフラグメントを置き換えます。

は、私は(基本的にonTopAsyncTaskは、現在のフラグメント(SwipeRefresh)上で実行されていると私は別の断片と交換したい場合、既存のフラグメントが表示されたままになりますことを観察し、新しいものは隠されています(恐らく - 私はそれがダイアログを表示するか、物事をするので、それが表示されていないことを知っています)。また、バックを押すと、 'root'フラグメント(タイトルバーもテキストを変更する)に戻りますが、実行中の非同期タスクを持つものは、FrameLayoutに永遠に(アプリケーションが終了するまで)ぶら下がっています。どんな助けでも本当に感謝しています。 フラグメントの交換:あなたのフラグメントのonPauseまたはonStopコールバックで実行されているAsyncTaskをシャットダウンする

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

てみましたか?

+0

おかげで、私は、これが問題だと思いました。さて、私はどのくらいうまくいくかはわかりませんが、onStop()のタスクで 'cancel()'を呼び出し、非同期タスクで 'isCancelled()'をチェックします。 –

関連する問題