2016-07-14 5 views
2

私はR.layout.myFragmentとしてアクセスされる(あらかじめ書かれた)断片を持っています。 ViewPager内のFragmentPagerAdapterにFragment(あらかじめ記述されたコードでも)を渡さなければならないので、getFragmentManager().findFragmentById(R.layout.myFragment)として渡そうとしましたが、おそらくR.id.somethingという形の何かを期待してnullを返しました。
Googleマップフラグメントの実装に関連して、ここでいくつかの回答が見つかりましたが、私はR.layout.myFragmentの形でフラグメントを使用し、親/コンテナフラグメントを持たない(または私が知る限り、同様のもの)を使用してFragmentTransactionを使用します。
フラグメントは、ViewPagerのFragmentPagerAdapterのgetItem()オーバーライドで返されることが予想されます。そのフラグメントを返すためにそれを渡すにはどうしたらよいですか?このフラグメントを返すにはどうしたらいいですか?

+0

コードはどこですか?疲れましたか? – Nambi

+0

あなたを助けた場合は、回答を受け入れることを検討してください – SoroushA

答えて

0

解決策は2つあります。両方とも、必要なものを見つけるためにすべての断片を繰り返します。

としては、あなたが接続されているすべてのフラグメントのリストを作成し、後でそれを反復処理するためにActivityクラスのonAttachFragmentメソッドを使用することができ、didi_X8によってhereを説明した:

List<WeakReference<Fragment>> fragList = new ArrayList<WeakReference<Fragment>>(); 

@Override 
public void onAttachFragment (Fragment fragment) { 
    fragList.add(new WeakReference(fragment)); 
} 

public List<Fragment> getActiveFragments() { 
ArrayList<Fragment> ret = new ArrayList<Fragment>(); 
for(WeakReference<Fragment> ref : fragList) { 
    Fragment f = ref.get(); 
    if(f != null) { 
     if(f.isVisible()) { 
      ret.add(f); 
     } 
    } 
} 
return ret; 
} 

用いることであろうas explained by Michael別の解決策をライブラリをサポートし、getFragmentsメソッドを利用してください:

public List<Fragment> getVisibleFragments() { 
List<Fragment> allFragments = getSupportFragmentManager().getFragments(); 
if (allFragments == null || allFragments.isEmpty()) { 
    return Collections.emptyList(); 
} 

List<Fragment> visibleFragments = new ArrayList<Fragment>(); 
for (Fragment fragment : allFragments) { 
    if (fragment.isVisible()) { 
     visibleFragments.add(fragment); 
    } 
} 
return visibleFragments; 
} 
関連する問題