Records、Chart、および PieChart の 3 つのフラグメントを持つアプリケーションがあります。これらのフラグメントは単一のアクティビティで ViewPager に格納され、ユーザーはそれらの間をスワイプできます。Records フラグメントには、ユーザーがデータを入力できるテーブルがあります。ユーザーがデータを入力すると、他の 2 つのフラグメントはこのデータを参照するため、更新する必要があります。もともと、スワイプしたときにフラグメントを更新したかったのですが、スワイプ可能であるため、onPause() (したがって onResume()) はタブが表示されたときにのみ呼び出されるため、onPause() と onResume() を使用できません。 2 画面以上離れています。そこで、Records フラグメントが Activity にコールバックを送信して、Records フラグメントが更新されたときに他のフラグメントに自分自身を更新するように指示することにしました。すべてのフラグメントをメモリに保持し、アプリがバックグラウンドに入るまでこれは正常に機能します。アプリがバックグラウンドから出たときに、ユーザーがテーブルにデータを入力すると、他のフラグメントのすべての変数が null であるため、アプリがクラッシュします。なぜこうなった?アプリのどこにも saveinstancestate を使用していません。私はすべきですか?
質問する
1012 次
1 に答える
0
ここからの例で行く:
http://developer.android.com/reference/android/app/Fragment.html
Fragment の onSaveInstance() の Bundle に、各 UI コンポーネントをサポートするすべてのデータを保存する必要があります。次に、onActivityCreated() コールバックで、データを復元します。
于 2013-07-01T03:45:29.583 に答える