2016-12-17 1 views
0

Fragmentが実際に画面に表示されたときを把握しておらず、別のFragmentがそれを置き換えたときに非表示にしています。私が助けることができる方法を知る必要があることを意味する。How to know [PagerAdapterにはない]画面にフラグメントが表示されましたか?

これまでに以下の方法で試してみました。これらのメソッドは呼び出していません。私はPagerAdaperの中にFragmentsを使用していません(SO答えによると)。

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
} 

@Override 
public void onHiddenChanged(boolean hidden) { 
    super.onHiddenChanged(hidden); 
} 

@Override 
public void setMenuVisibility(boolean menuVisible) { 
    super.setMenuVisibility(menuVisible); 
} 

は、最後に私は、彼らが呼んでいるの両方が、ここで問題がonDetachである第2のフラグメントのonAttach後に呼び出している

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
} 

@Override 
public void onDetach() { 
    super.onDetach(); 
} 

で試してみました。

何とか私は何もしなかった。

お読みいただきありがとうございます!

答えて

0

以下の方法が役立つ場合があります。ビューを表示後に呼び出しています。

@Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
    } 

フラグメントを非表示にするには、次のコードを試してください。

final Fragment hideFragment = getFragmentManager().findFragmentById(R.id.container); 
     getFragmentManager() 
       .beginTransaction() 
       .add(R.id.container, fragment, fragment.getClass().getSimpleName()) 
       **.hide(hideFragment)** 
       .addToBackStack(hideFragment.getClass().getSimpleName()) 
       .commit(); 

.hideメソッドを使用している場合は、必ず以下のメソッドが呼び出されます。

@Override 
    public void onHiddenChanged(boolean hidden) { 
     super.onHiddenChanged(hidden); 
    } 
+0

「表示」状態を知るには良いですが、「非表示」状態はどうですか? –

+0

transaction.add()をtransaction.hide()メソッドで使用している場合は、必ず@Overrideを返します。 public void onHiddenChanged(boolean hidden){ super.onHiddenChanged(hidden); } このメソッドは呼び出します。 –

0

あなたはFragmentのライフ・サイクル・コールバックでの現在の状態の表示を知ってisHidden()を使用することができます。

onHiddenChange(boolean)メソッドでも状態が呼び出されます。フラグメントが添付されている場合、デフォルト状態はSHOWです。したがって、onHiddenChange(boolean)を呼び出す場合は、トランザクションを使用するときに明示的にshow()/hide()を呼び出す必要があります。このような

:第2の断片にfirstFragmentとonActivityCreatedに getSupportFragmentManager().benginTranscation.add(...).show().commit();

1

使用onDetach。

+0

ニースキャッチ!しかし、問題は 'onStop'が次の' Fragment's onAttach'メソッドの後に呼び出されるということです。 –

+0

最初のフラグメントでonDetachを使用し、2番目のフラグメントでonActivityCreatedを使用します。onActivityCreatedは、最初のフラグメントがデタッチされた後に呼び出されます。 –

+0

これを試してください。それは助けるだろう.. –

関連する問題