2013-08-09 17 views
12

私のアプリケーションでは、タブバーの機能があります。あるタブでは、lisviewにサーバーデータを表示しています。そのリスト項目の詳細ページをクリックすると、新しいフラグメントが開きます。androidのフラグメントで戻るボタンが押されたときにonCreateViewを呼び出すのを防ぐ方法

しかし、その詳細ページから戻るボタンを押すと、oncreateviewが前のページを呼び出すたびに、listviewが作成され、新しいサーバーデータが新たに取得されるたびに表示されます。どのようにしてこのようなことを防止し、戻るボタンを押すと以前の状態を表示するのですか?

答えて

5

私はonCreateViewを呼び出すのは良い考えではないと思いますが、関数が呼び出されない場合は例外がありますので、そうしてはいけません。それを行う代わりに、あなたが明示的に呼び出すことができる別の場所にあなたの "リストビューを作成し、新しいサーバーデータを取得する"を移動することをお勧めします(あなたが望む場所に、onCreate()が良い場所です) onCreateView()。お役に立てれば。

-1

サーバーからデータをフェッチしているときに参照を更新する必要があるため、ビュー変数とは別にデータオブジェクトをキャッシュする必要があります。また、再度呼び出してブランチを使用してそのコードを分岐したくない場合。

すべての初期化とサーバー呼び出しを行い、init()メソッドを呼び出さない場合は常にinit()メソッドへの呼び出しを論理的に分岐するinit()メソッドを作成します。

31

この回答をするには時間がかかりすぎましたが、私はあなたの断片を他のものに置き換えていると思います。私が言うことを意味しますが、そう簡単な解決策ではなく、あなたのフラグメントを置き換えるので

ft.add(R.id.realTabContent, fragment); 

を使用しているあなたは、あなたのonItemClickで使用しているされ、他のフラグメントに移動する

ft.replace(R.id.realTabContent, fragment); 

を使用しています。

の違いを理解してを置き換えてを置き換えます。これはあなたの問題を解決します。

置き換え:あなたが戻ってくるときそれが元のフラグメントを交換し、ビューを再作成
追加:それだけでスタックする新しいフラグメントを追加します。我々が設定されている場合、これは同じ問題に直面している人を助ける

希望...

+1

'Add'は、新しいフラグメントが古い –

+0

と重なっこれは正しくありません:ドキュメントは、*追加と言う*意志このフラグメントをコンテナに追加し、バックスタックに追加しないでください。 https://developer.android.com/reference/android/app/FragmentTransaction.html#add(int,%20android.app.Fragment,%20java.lang.String) – liucheia

関連する問題