2013-10-01 1 views
1

Когда я пытаюсь показать XML-файл android в графическом макете в Eclipse, я получаю это сообщение: выберите макет предварительного просмотра из контекстного меню «Макет фрагмента». Я следую инструкции, щелкнув правой кнопкой мыши макет -> Макет фрагмента -> Выберите макет. Однако, когда я пытаюсь выбрать мой макет (файл, который по какой-то причине не может быть отображен), я получаю эту ошибку: «Циклический include, not valid». Я могу выбрать все другие макеты, такие как андроиды, предварительно заданные list_content.Одиночный фрагмент в xml дает ошибку предварительного просмотра: «Cyclic include, not valid»

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

Вот мой XML:

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/example_id" 
    android:name="com.example.test.MainFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

и вот мой Java:

public class MainActivity extends FragmentActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
} 

Вот трафаретная печать:

Print screen of "Cyclic include, not valid" error

ответ

1

После того, как @MiStr указал в правильном направлении в комментариях к его ответу, я понял, что причина, по которой я получил ошибку циклического включения, была совершенно очевидна. Я пытался настроить макет предварительного просмотра фрагмента на представление, содержащее фрагмент. Макет предварительного просмотра должен быть корневым расположением фрагмента, а не самим фрагментом ... Корневой макет - это макет, который возвращается фрагментом onCreateView(). Дополнительная информация здесь http://developer.android.com/guide/components/fragments.html#Creating

ListFragment автоматически создает корневой макет, поэтому вам не нужно переопределять метод onCreateView(). Eclipse (я не знаю о студии Android) должен автоматически просматривать список примеров, но для ListFragment.

1

Вы должны включить имя атрибута в элементе XML фрагмента, например:

android:name="com.example.news.ArticleListFragment" 

... где «ArticleListFragment» - это класс фрагментов, который вы хотите использовать. Полный фрагмент кода является:

<fragment android:name="com.example.news.ArticleListFragment" 
      android:id="@+id/list" 
      android:layout_weight="1" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" /> 

Смотрите также: Fragments и Creating a Fragment.

+0

Правда. Однако это не решает проблему. Любые другие предложения? Я обновил код в вопросах с атрибутом name. –

+0

Что такое весь файл? Имеет ли он стандартный заголовок: ... также, находится ли он в контейнере макета? – MiStr

+1

Кажется, что существует циклическая ссылка, которую нужно очистить. Кроме того, класс, который ссылается на этот файл макета XML, не должен быть указан в атрибуте «name». – MiStr

0

только импорт android.app.Fragment; может получить предварительный просмотр! import android.support.v4.app.Fragment; не может получить предварительный просмотр!

 Смежные вопросы

  • Нет связанных вопросов^_^