Fragment.onCreateView имеет нулевой контейнер
Следующее работает на Android 1.6, поэтому я использую пакет совместимости для фрагментов. В следующихTestFragment
статический вложенный класс:
<code>public class FragmentTestActivity extends FragmentActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public static class TestFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { TextView result = new TextView(getActivity()); result.setText("Hello TestFragment"); return result; } } </code>
}
Файл main.xml:
<code><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <fragment class="com.test.FragmentTestActivity$TestFragment" android:id="@+id/test" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </FrameLayout> </code>
Странно то, что параметр контейнера вonCreateView
являетсяnull
.
Теперь, если я добавлю фрагмент программно так (просто изменитеonCreate
метод действия) контейнер больше не является нулевым. Зачем?
<code>public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Fragment frag = new TestFragment(); getSupportFragmentManager().beginTransaction().add(android.R.id.content, frag).commit(); } </code>