Подтвердить что ты не робот

Бинарная строка XML файла # 9: ошибка раздувания фрагмента класса

Получаем ошибку inflating fragment error while running calling an Activity which having fragments.

CheckList - это активность, которая содержит listview and Description fragments., а ее код xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="match_parent" android:layout_height="match_parent">

        <fragment class="com.uday.honeytest.CheckList$listview"
                android:id="@+id/titles" android:layout_weight="1"
                android:layout_width="0px" android:layout_height="match_parent" />

        <fragment class="com.uday.honeytest.CheckList$Description"
        android:id="@+id/details" android:layout_weight="1"
                android:layout_width="0px" android:layout_height="match_parent"
                android:background="?android:attr/detailsElementBackground" />

    </LinearLayout>

Класс CheckList:

public class CheckList extends Activity {

    static int position=0;
    static CheckList check;

    public void onCreate(Bundle saved){

        super.onCreate(saved);
        setContentView(R.layout.checklist);


    }

    public static class listview extends ListFragment {

            View mConverView;
            String[] items;



             @Override
                public void onActivityCreated(Bundle savedInstanceState) {
                    super.onActivityCreated(savedInstanceState);
             }

            public View onCreateView(LayoutInflater inflater, ViewGroup container,
                    Bundle savedInstanceState) {
                xxxxxx..
                     return mConverView;
            }
        }

Аналогично, у меня есть фрагмент описания ниже этого.

Но я получаю

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.uday.honeytest/com.uday.honeytest.CheckList}: android.view.InflateException: Binary XML file line #9: Error inflating class fragment

в строке setContentView.

, а мой класс фрагмента описания: Отредактировано:

public static class Description extends Fragment {

        View mConverView;
        String details[];

        public static Description getInstance() {
            Description desc=new Description();
            return desc;

        }

         @Override
            public void onActivityCreated(Bundle savedInstanceState) {
                super.onActivityCreated(savedInstanceState);
         }


        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {


            TextView textview=new TextView(getActivity());
            textview.setLayoutParams(new LayoutParams(MarginLayoutParams.WRAP_CONTENT, MarginLayoutParams.WRAP_CONTENT));



            return textview;
        }
    }

Что тут делать неправильно?

Спасибо

4b9b3361

Ответ 1

В вашем контрольном списке действий должен быть расширен FragmentActivity.

Ответ 2

<fragment class="com.uday.honeytest.CheckList$Description", где он получает ошибку.

Вы уверены, что правильно набрали полное имя класса?

Вы пробовали очистить проект/объекты проекта?

Я не вижу ничего подобного Description в этом классе, это может быть проблемой.

Надеюсь, что это поможет.

Ответ 3

Я только что удалил onCreateView code which contains inflating xml в listview fragment и перешел в метод onActivityCreated с тем, что он работает.

The reason may be:

ListFragment имеет макет по умолчанию, который состоит из одного списка. Однако, если вы хотите, вы можете настроить макет фрагмента, вернув свою собственную иерархию представлений из onCreateView (LayoutInflater, ViewGroup, Bundle). Для этого ваша иерархия представлений должна содержать объект ListView с идентификатором "@android: id/list" (или список, если он в коде)

Итак, мой список расширяет ListFragment и не кодирует список в xml, и непосредственно мы можем setListAdapter в onActivityCreated, а не в onCreateView.