Фрагменты Android не работают должным образом - PullRequest
0 голосов
/ 07 февраля 2012

Итак, у меня есть 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);

1 Ответ

0 голосов
/ 11 февраля 2012

То, чего мне не хватало, - это то, что вам нужно создавать макеты, которые сообщают, является ли это одной или двумя панелями.Лучший способ понять это - использовать пример NewsReader в качестве шаблона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...