2011-09-16 26 views
6

可能性の重複:
Separate Back Stack for each tab in Android using FragmentsAndroidの断片のビューステート

私は最近、FragmentActivity内のタブホスト内の断片を使用してアプリケーション上で作業を開始しました。.. Androidのドキュメントでは、TabActivityクラスが非推奨となっているため、これを行うと言われています。フラグメントを使用するために、私はアンドロイドv4サポートライブラリを使用しています。

現在のところ、私のアプリはフラグメントが存在する1つのタブで構成されています。私は以前にナビゲートするために戻ってキーを打つまで

FragmentTransaction ft = fragmentManager.beginTransaction(); 
ft.replace(containerId, newFragment); 
ft.addToBackStack(null); 
ft.commit(); 

すべてがうまくと良かった:私は(ドキュメントに基づいて正しいと思われる)次のコードを使用しているタブ内の新しいフラグメントにナビゲートするには断片化して、私のすべてのビューステートがかなり破壊されていることに気がつきました。起こっていたのは、ビューが以前に作成されていてもonCreateView()メソッドが以前のフラグメントで再び呼び出されたということです。私はフラグメントを使って状態を適切に維持する方法について調べてきましたが、これに関してまともな文書を見つけることはできません。 onCreateViewは()するたびに呼び出されていなかった - 私は、これは実際に私のビューステートが保持されたことに非常によく働いていた代わりに

ft.replace(containerId, newFragment); 

ft.add(containerId, newFragment); 

を使用していた試みた何

私の前の断片が示されました。しかし、私が気付き始めたのは、コンポーネントを見ることができなくても、現在のフラグメントの下にある以前のフラグメントからコンポーネント(ボタンなど)とやりとりできることでした。私は、次のメソッドをいくつかの状態を保存するために使用する必要があります:

public void onSaveInstanceState (Bundle outState) 

私はこのメソッドを実装しましたが、決して呼び出されませんでした!また、onCreateView()メソッドとonActivityCreated()メソッドまでのバンドルが常にnullであることに気付きました。確かにGoogleはこのようなことを達成することをこのように困難にしていないし、何かが欠けているはずですか?フラグメントのビューステートを正しく維持する方法についての助言があれば、大歓迎です!

ありがとうございました。

+0

誰でもこれを経験しましたか?助けてください! :) –

+0

フラグメントの間を移動するだけではなく、別のアクティビティが関与するときにビューステートの問題が発生しないように見えるので、ログに記録したバグ(issue 20120)を参照してください:http:// code。 google.com/p/android/issues/detail?id=20120 –

答えて