2011-11-15 15 views
3

Activityのような断片を管理できるかどうか疑問です。
実際にはstartActivityForResultからTabHostを使用して結果を得ることができませんでした。タブメニューでFLAG_ACTIVITY_REORDER_TO_FRONTとインテントを使用するように前のビューを保存するように選択したときに、それぞれのフラグメントを呼び出す必要があります。フラグメントを置き換えるときはいつでも、プログラムは常に新しいフラグメントを作成します。

ありがとうございます。Android:1つのアクティビティでフラグメントを管理するにはどうすればよいですか?

ps。私はsavedInstanceStateを使用しようとしましたが、バンドルはputIntputStringputBundleなどしか提供していません。ビューなどのオブジェクトを保存することはできますか?

@パトリックブース ここに私のコードです。後FragmentManager fmFragmentTransaction ft

AFragment fragment = AFragment.getInstance(); 
if (!fragment.isAdded()) 
    ft.replace(res, fragment, tag); 
ft.commit(); 

とAFragment.newInstanceは()として実装され、

AFragment mThis; 
public static AFragment getInstance() { 
    if (mThis == null) 
     mThis = new AFragment(); 
    return mThis; 
} 
+0

を再利用するコードに似たものを使用したことができます試してみてくださいを宣言置換する部分をどこで行うかのコードをいくつか表示しますか?私はあなたが常に新しい断片を作り出す者だと思います。作成したタブへの参照を保存し、フラグメントを置き換えるときに使用してください。 –

答えて

4

あなたは以下のフラグメント

ContactListFragment contactListFragment = 
    (ContactListFragment)getFragmentManager().findFragmentByTag("ContactList"); 
if(contactListFragment == null){ 
contactListFragment = new ContactListFragment(); 
} 
ft.replace(R.id.fragment_container, contactListFragment,"ContactList"; 
ft.commit();  
+0

ご注意いただきありがとうございます。しかし、残念ながら、それは動作しません。フラグメントが2回追加できないため、IllegalStateExceptionがスローされます( 'Fragment already added'というエラーメッセージが表示されます)。 – Aigori

関連する問題