2014-11-04 2 views
3

Во время проверки в графическом макете я получаю эту ошибку:MockView не может быть приведен к android.view.ViewGroup в XML

Exception raised during rendering: com.android.layoutlib.bridge.MockView cannot be cast to android.view.ViewGroup

Ниже я разместил мои activity_main.xml коды:

activity_main .xml:

<?xml version="1.0" encoding="utf-8"?> 

    <android.support.v4.widget.DrawerLayout 

    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <RelativeLayout 
     android:id="@+id/container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <TextView 
      android:id="@+id/textviewHeading" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="5dp" 
      android:fontFamily="fonts/Dosis.otf" 
      android:text="@string/heading_chapter" 
      android:textSize="25dp" 
      android:visibility="gone" /> 

     <ListView 
      android:id="@+id/listviewChapters" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_above="@+id/imageviewBanner" 
      android:layout_below="@+id/textviewHeading" 
      android:layout_marginTop="5dp" > 
     </ListView> 

     <ImageView 
      android:id="@+id/imageviewBanner" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      android:src="@drawable/banner" 
      android:visibility="invisible" /> 
    </RelativeLayout> 

    <ListView 
     android:id="@+id/list_slidermenu" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:choiceMode="singleChoice" 
     android:divider="@color/list_divider" 
     android:dividerHeight="1dp"   
     android:listSelector="@drawable/list_selector" 
     android:background="@color/list_background"/> 

    </android.support.v4.widget.DrawerLayout> 
+0

Вы перезапустили свою среду IDE? –

+0

yes.But все равно ошибка остается такой же. – Steve

+0

Можно ли добавить более двух дочерних просмотров в DrawerLayout? @Alif – Steve

ответ

2

Эта ошибка возникла из-за неправильной реализации схемы выдвижного ящика. Я помещаю три прямых макета в макет ящика, ошибка будет происходить. В соответствии с документом Google, он взял два макета напрямую.

В макете ящика, если я поместил два прямых макета, решил проблему. Вот почему я использую Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout Layout.

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <FrameLayout 
     android:id="@+id/frame_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <RelativeLayout 
      android:id="@+id/container" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" > 

      <TextView 
       android:id="@+id/textviewHeading" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentTop="true" 
       android:layout_centerHorizontal="true" 
       android:layout_marginTop="5dp" 
       android:fontFamily="fonts/Dosis.otf" 
       android:text="@string/heading_chapter" 
       android:textSize="25sp" 
       android:visibility="gone" /> 

      <ListView 
       android:id="@+id/listviewChapters" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:layout_above="@+id/imageviewBanner" 
       android:layout_below="@+id/textviewHeading" 
       android:layout_marginTop="5dp" > 
      </ListView> 

      <ImageView 
       android:id="@+id/imageviewBanner" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_alignParentBottom="true" 
       android:layout_centerHorizontal="true" 
       android:src="@drawable/banner" 
       android:visibility="invisible" /> 
     </RelativeLayout> 
    </FrameLayout> 

    <ListView 
     android:id="@+id/list_slidermenu" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:background="@color/list_background" 
     android:choiceMode="singleChoice" 
     android:divider="@color/list_divider" 
     android:dividerHeight="1dp" 
     android:listSelector="@drawable/list_selector" /> 

</android.support.v4.widget.DrawerLayout> 
0

использование этого

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 
    xmlns:tools="http://schemas.android.com/tools" 
 
    android:id="@+id/drawer_layout" 
 
    android:layout_width="match_parent" 
 
    android:layout_height="match_parent" > 
 

 
    <FrameLayout 
 
     android:id="@+id/container" 
 
     android:layout_width="match_parent" 
 
     android:layout_height="match_parent" 
 
     tools:context="com.sun_soft.app_maker_new.MainActivity" 
 
     tools:ignore="MergeRootFrame" /> 
 

 
    <ListView 
 
     android:id="@+id/left_drawer" 
 
     android:layout_width="240dp" 
 
     android:layout_height="match_parent" 
 
     android:layout_gravity="start" 
 
     android:background="#ffffff" 
 
     android:choiceMode="singleChoice" 
 
     android:divider="@android:color/transparent" 
 
     android:dividerHeight="0dp" /> 
 

 
    <ListView 
 
     android:id="@+id/right_drawer" 
 
     android:layout_width="@dimen/paanelsize" 
 
     android:layout_height="match_parent" 
 
     android:layout_gravity="end" 
 
     android:background="#ffffff" 
 
     android:choiceMode="singleChoice" 
 
     android:divider="@android:color/transparent" 
 
     android:dividerHeight="0dp" /> 
 

 
</android.support.v4.widget.DrawerLayout>

затем позже вы должны передать ListView в mainactivity и должны сделать адаптер и раздувать вид для ListItem.

Я думаю, что в вашем коде вы ошибаетесь, бросая какой-то взгляд. отправьте пожалуйста.

+0

Android XML еще не поддерживается SO, и ваш фрагмент кода не будет выполняться здесь. – mr5

0

Я бы посоветовал вам проверить ресурсы, на которые ссылается в макете.

В моем случае я допустил ошибку, сохранив файл psd в виде файла png. Когда это «плохой» PNG файла упоминается в моем макете, Eclipse заканчивает с такой ошибкой, т.е.

Exception raised during rendering: com.android.layoutlib.bridge.MockView cannot be cast to android.widget.ImageView 

Просто потому, что файл PNG ссылки в ImageView был, по сути, в PSD-файл, то есть:

android:src="@drawable/my_psd_file_with_wrong_png_extension" 

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

2

Я нашел эту проблему в своем проекте, после чего я добавил файл support.v4.jar в свой проект, после чего он решил мою проблему, поэтому я думаю, что вы можете попробовать это.

+0

Я нашел ответ задолго до этого и разместил его. Пусть ваш ответ поможет кому-то :) – Steve

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