2011-08-15 16 views
8

私はこのような質問をしています。私は一種の好奇心です。Androidの断片を隠すOnHide/OnShowを表示しますか?

1)フラグメントが既にxmlで作成されている場合、ほとんどのGoogleデモはそのIDでフラグメントを見つけます。

このアプローチをとると、断片を表示する方法は、断片が既に作成されているため、断片を隠して表示することです。

2)Googleが提供する例では、コンストラクタでフラグメントを作成し、それを膨張させることができます。これは、getActivity()がそのフラグメントで呼び出された場合にnullを返すような方法で変です。

だから私が最初のアプローチを取るなら、私はその断片を隠して見せなければなりません。 なぜ、GoogleはonHideやonShowのようなフラグメントにフックを提供しないのですか? これは、私たちが実装して明示的に呼び出す関数で自分自身をきれいにするなら、正しく処理できるようにするためです。

+0

この投稿は、いくつかの関連の答えを持っています http://stackoverflow.com/questions/10024739/how-to-determine-when-fragment-becomes-visible-in-viewpager – treesAreEverywhere

答えて

25

あなたは自分のフラグメントに

public void onHiddenChanged(boolean hidden) { 
} 

を上書きonHide/onShowにオペアンプをフックします。

-2

以下の関数をオーバーライドして、フラグメントが表示されるかどうかを判断します。

@Override ます。public void setMenuVisibility(可視ブール最終)

0

Overrinde setUserVisibleHintことによって、あなたは簡単にそれを追跡することができます。

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if(isVisibleToUser){ 
     //When fragment is visible 
    } 
    Log.i("my_fragment","setUserVisibleHint: "+isVisibleToUser); 
} 
関連する問題