2016-03-22 10 views
-1

私はコンテナを持つアクティビティを持っています。私はこの容器に入れ替える2つの断片を持っています。フラグメントは、ユーザーがクリックすると、私はコンテナアクティビティを再開する - 2つのフラグメントをコンテナに処理する

MainActivityのOnCreate

if (savedInstanceState == null) { 
    ListFragment listFragment = new ListFragment(); 
    ft.add(R.id.fragment_container, listFragment, "LIST"); 
    ft.commit(); 
} 

にリスト・フラグメントを追加しているfragmentListfragmentDetail

初めてですリスト、コンテナをディテール・フラグメントに置き換えます。

私は活動を再開したときにActionButton

FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); 
fragmentTransaction.replace(R.id.fragment_container, detailFragment); 
fragmentTransaction.commit(); 

http://www.vogella.com/tutorials/Android/images/xfragmentsusage10.png.pagespeed.ic.MkyF4ZO5Hr.png

問題が来ました。リストデータを再度要求する必要があるかどうか、または詳細フラグメントが表示されているかどうかをどのように知ることができますか?私のonResumeメソッドでは、両方のフラグメントがnullであるためです。

答えて

1

すでに詳細については、最初のステップである

チェックこの文書をsavedInstanceStateをチェックしている: http://developer.android.com/intl/es/training/basics/activity-lifecycle/recreating.html

キーがちょうどonSaveInstanceState方法であなたの現在の状態を保存し、復元、非常に簡単ですstate on onRestoreInstanceState

savedInstanceStateはバンドルであり、バンドルオブジェクトはアクティビティとフラグメント間でデータを格納して渡すために使用されます。したがって、ブール値変数を格納して、どのフラグメントを表示しているかを判断する必要があります。 NDあなたが

getFragmentManager().FindFragmentByTag(string tag) 

を使用して、それがnullで、その後、あなたが返さ断片上のisVisibleを確認することができ、一般的に、あなたをリセットする必要がありますかどうかを確認することができ、このブールフラグ

+0

ブール値を渡す代わりに '活性化されたフラグメント'を渡す別の方法はありますか?私の選択肢では、これはきれいな方法で対処する必要があります。 – rguerra

+0

あなたがパルケーブルやシリアライザブルでない限り、バンドル内のオブジェクトを渡すことはできません。これは断片に対しては不可能でも非常に難しいことでもありません。あなたのフラグメントに情報がバンドルにも格納されている場合は、文字列や数字のように、それはかなり簡単で簡単です。もしそれがクリーンであるとすれば、 –

+0

私はアクセスできますか? onResumeメソッドでバンドルしますか? – rguerra

0

に応じて履歴書にこのフラグメントを復元アダプタも同様に

関連する問題