Итак, у меня есть Activity, у которой есть FragmentPagerAdapter, и внутри каждого фрагмента у меня есть два других фрагмента (здесь они называются a и b). Фрагмент a - это ListFragment, а фрагмент b - просто обычный фрагмент, отображающий значение.
Здесь есть два вопроса ...
1.) Я не могу получить представления из Упражнения во фрагменте B
2.) Если я закомментирую захваты вместо того, чтобы показывать фрагмент А на телефоне, а затем B после выбора элемента, ИТ-специалисты отображают оба на одном и том же видоискателе.
Однако я не могу загрузить свои макеты должным образом. Однако, если я удаляю b, кажется, все работает нормально ...
Активность загружает следующий макет ...
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.viewpagerindicator.TitlePageIndicator
android:id="@+id/indicator"
android:padding="10dip"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/mainpager"/>
</LinearLayout>
Мой первый фрагмент выглядит следующим образом
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<fragment android:name="com.gleason.apa.fragment.BarListFragment"
android:id="@+id/bar_list_fragment"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
<fragment android:name="com.gleason.apa.fragment.BarEditFragment"
android:id="@+id/bar_edit_fragment"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" />
</LinearLayout>
Фрагмент А
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bar Name: " />
<TextView
android:id="@+id/bar_name_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Address: " />
<TextView
android:id="@+id/bar_address_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
Фураж B
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bar Name" />
<EditText
android:id="@+id/bar_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:hint="Name"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Address" />
<EditText
android:id="@+id/bar_address"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:hint="Address"/>
</LinearLayout>
<Button
android:id="@+id/submitBar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Add Game"/>
</LinearLayout>
Однако, когда я пытаюсь скомпилировать и запустить, я получаю следующее ...
android.view.InflateException: Binary XML file line #6: Error inflating class fragment
java.lang.NullPointerException
Есть идеи?
ОБНОВЛЕНИЕ:
Таким образом, исключение нулевого указателя происходит из BarEditFragment ...
@Override
public void onActivityCreated(Bundle savedInstanceState) {
....
name = (EditText) activity.findViewById(R.id.bar_name);
address = (EditText) activity.findViewById(R.id.bar_address);
Button submit = (Button) activity.findViewById(R.id.submitBar);
}
Все они возвращаются к нулю.
Кроме того, если я удаляю их, фрагменты показывают оба, даже на моем телефоне. Таким образом, он показывает два небольших фрагмента рядом, а не 2 «экрана», как это должно быть.
Также это не сработало ...
activity.getFragmentManager().findFragmentById(R.id.bar_edit_fragment).getView().findViewById(R.id.bar_name);