0

短い非同期API呼び出しを行うUIのフラグメントがあります。非同期タスクがフラグメントを完了すると、結果文字列を含むToastメッセージがトリガーされます。

私の問題は、ユーザーが結果を待たずに[戻る]ボタンを押すと、メソッドが原因でアプリがクラッシュし、アクティビティが状態の背後にあるため、既に切り離されているフラグメントで+onPostExecuteがトリガーされることです。ToastgetString(R.string.whatever)onDestroy

フラグメントが切り離されているかどうか、またはProgressDialogモーダルであるを使用しているかどうかを確認できますが、ブロックやその他の癖なしでトーストを表示するとよいと思います。それを達成する方法について何か提案はありますか?アプリケーションクラスのブロードキャストレシーバー==やり過ぎ?

ありがとう。

UPDログ:

01-24 12:01:29.626:E / AndroidRuntime(616):java.lang.IllegalStateException:フラグメントHandsetSocialNetworksFragment{40612a78}がアクティビティ01-2412:01:29.626にアタッチされていません:E / AndroidRuntime(616):androidで。 support.v4.app.Fragment.getResources(Fragment.java:571)01-24 12:01:29.626:E / AndroidRuntime(616):android.support.v4.app.Fragment.getString(Fragment.java:593 )。

4

1 に答える 1

2

非同期呼び出しの開始時に、フラグメントからアクティビティを取得し、そこからアプリケーションコンテキストを取得します。後でそれを使用して、必要な文字列を取得します。

または、トーストを表示する必要があるときではなく、非同期呼び出しを開始するときに必要な文字列をフェッチすることもできます。

于 2013-01-24T09:23:08.990 に答える