Arhn - архитектура программирования

listFragment не раздувается в приложении на основе tabHost

У меня есть приложение на основе tabHost с фрагментами. Оно отлично работает, если я использую свои фрагменты с LinearLayout.

но мне нужно иметь список на одной из вкладок представлений [фрагмент]

но приложение вылетает из-за неправильного надувания: мой класс [фрагмент просмотра вкладки]:

public class Tab2Fragment extends Fragment { //primera pregunta, lo puedo hacer asi o con FragmentActivity
//public class Tab2Fragment extends ListFragment { //primera pregunta, lo puedo hacer asi o con FragmentActivity


    private FragmentManager fm;
    private ListFragment list;
    private List<Map<String, String>> listItems;
    private String[] froms;
    private int[] viewIds;

    /* (non-Javadoc)
     * @see android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)
     */


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        if (container == null) {
            // We have different layouts, and in one of them this
            // fragment's containing frame doesn't exist.  The fragment
            // may still be created from its saved state, but there is
            // no reason to try to create its view hierarchy because it
            // won't be displayed.  Note this is not needed -- we could
            // just run the code below, where we would create and return
            // the view hierarchy; it would just never be used.
            return null;
        }
        return (LinearLayout)inflater.inflate(R.layout.tab_frag2_layout, container, false);
    }



}

мой xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:background="#00FF00">

        <fragment
        android:name="android.support.v4.app.ListFragment"
        android:id="@+id/List"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>

</LinearLayout>

Ошибка:

05-31 22:39:58.412: E/AndroidRuntime(2796): FATAL EXCEPTION: main
05-31 22:39:58.412: E/AndroidRuntime(2796): android.view.InflateException: Binary XML file line #8: Error inflating class fragment
05-31 22:39:58.412: E/AndroidRuntime(2796):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:582)
05-31 22:39:58.412: E/AndroidRuntime(2796):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
05-31 22:39:58.412: E/AndroidRuntime(2796):     at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
05-31 22:39:58.412: E/AndroidRuntime(2796):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
05-31 22:39:58.412: E/AndroidRuntime(2796):     at com.orchard.elasto.Tab2Fragment.onCreateView(Tab2Fragment.java:54)
05-31 22:39:58.412: E/AndroidRuntime(2796):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:870)

Итак, как правильно раздувать список?

должен ли я сделать это с помощью fragmentList, даже когда tabHost просматривает фрагмент?

public void onTabChanged(String tag) {
        TabInfo newTab = this.mapTabInfo.get(tag);
        if (mLastTab != newTab) {
            FragmentTransaction ft = this.getSupportFragmentManager().beginTransaction();
            if (mLastTab != null) {
                if (mLastTab.fragment != null) {
                    ft.detach(mLastTab.fragment);
                }
            }
            if (newTab != null) {
                if (newTab.fragment == null) {
                    newTab.fragment = Fragment.instantiate(this,
                            newTab.clss.getName(), newTab.args);
                    ft.add(R.id.realtabcontent, newTab.fragment, newTab.tag);
                } else {
                    ft.attach(newTab.fragment);
                }
            }

            mLastTab = newTab;
            ft.commit();
            this.getSupportFragmentManager().executePendingTransactions();
        }
    }

большое спасибо!!


  • почему вы не расширяете свой Tab2Fragment из ListFragment и не используете его таким образом? 31.05.2012

Ответы:


1

Ваша проблема здесь:

   android:name="android.support.v4.app.ListFragment" 

Вы говорите ему, что класс, который запускает этот фрагмент, — это ListFragment.

Вам нужно изменить его, чтобы он ссылался на ваш класс, и вам нужно сделать этот класс ListFragment вместо Fragment.

   android:name="your.package.name.Tab2Fragment" 
31.05.2012
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..