Я использую ViewPager с моим собственным PagerAdapter (Примечание: не используется FragmentPagerAdapter). Я пытаюсь общаться с моими фрагментами через свою активность, но когда я пытаюсь получить ссылку на фрагмент, он всегда возвращает null.Android: findFragmentById возвращает null
Вот мой метод Instantiate в моей пользовательской PagerAdapter:
@Override
public Object instantiateItem(ViewGroup container, int position) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = null;
switch (position) {
case 0:
itemView = inflater.inflate(R.layout.left, container, false);
break;
case 1:
itemView = inflater.inflate(R.layout.middle, container, false);
break;
case 2:
itemView = inflater.inflate(R.layout.right, container, false);
break;
case 3:
itemView = inflater.inflate(R.layout.right_right, container, false);
break;
}
((ViewPager) container).addView(itemView);
return itemView;
}
Вот мой XML для middle.xml:
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:name="com.example.testtabswipe.MiddleFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</fragment>
Вот мой XML для моего MiddleFragment класса (filenmae: middle_fragment. xml):
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/middle_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff555" >
<TextView
android:text="Testing some text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<GridView
android:id="@+id/gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:verticalSpacing="0dp"
android:horizontalSpacing="0dp"
android:stretchMode="columnWidth"
android:numColumns="2"
android:background="#fbb111" />
</RelativeLayout>
И, наконец, это то, что я вызываю в своей деятельности, чтобы получить ar правочник фрагменту:
MiddleFragment middleFragment = (MiddleFragment) getSupportFragmentManager().findFragmentById(R.id.middle_fragment);
if(middleFragment == null)
Log.d("Karl", "middleFragment Fragment null");
else
Log.d("Karl", "middleFragment Fragment is not null");
Это всегда приводит к "middleFragment Фрагмент нулевой"
Есть идеи?
PS: Это влияет на все фрагменты не только на середину.