2016-10-13 6 views
0

Вот файл activity_main.xml:android.support.v7.widget.AppCompatTextView не может быть приведен к android.widget.ImageView

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context="com.issaayoub.materialtest.MainActivity"> 

    <include 
     android:id="@+id/app_bar" 
     layout="@layout/app_bar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <android.support.v4.widget.DrawerLayout 
     android:id="@+id/drawer_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

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

      <android.support.design.widget.TabLayout 
       android:id="@+id/tabLayout" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:background="@color/colorPrimary" 
       android:elevation="4dp"> 

       <android.support.design.widget.TabItem 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:icon="@drawable/an" 
        android:text="@string/bird1" /> 

      </android.support.design.widget.TabLayout> 

      <android.support.v4.view.ViewPager 
       android:id="@+id/viewpager" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_below="@id/tabLayout"> 

      </android.support.v4.view.ViewPager> 
     </RelativeLayout> 

     <fragment 
      android:id="@+id/fragment_navigation_drawer" 
      android:name="com.issaayoub.materialtest.NavigationDrawerFragment" 
      android:layout_width="@dimen/navigation_drawer_width" 
      android:layout_height="match_parent" 
      android:layout_gravity="start" 
      app:layout="@layout/fragment_navigation_drawer" 
      tools:layout="@layout/fragment_navigation_drawer" /> 

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

Всякий раз, когда я добавил текущий TabItem внутри TabLayout я получил следующее сообщение об ошибке :

android.support.v7.widget.AppCompatTextView cannot be cast to android.widget.ImageView

При открытии детали проблемы рендеринга я получил следующее:

java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView cannot be cast to android.widget.ImageView 
    at android.support.design.widget.TabLayout$TabView.update(TabLayout.java:1675) 
    at android.support.design.widget.TabLayout$TabView.setTab(TabLayout.java:1627) 
    at android.support.design.widget.TabLayout.createTabView(TabLayout.java:927) 
    at android.support.design.widget.TabLayout.newTab(TabLayout.java:562) 
    at android.support.design.widget.TabLayout.addTabFromItemView(TabLayout.java:481) 
    at android.support.design.widget.TabLayout.addViewInternal(TabLayout.java:970) 
    at android.support.design.widget.TabLayout.addView(TabLayout.java:960) 
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:862) 
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:834) 
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) 
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:861) 
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:834) 
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) 
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:861) 
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:834) 
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) 
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:861) 
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:834) 
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:518) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:324) 
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:429) 
    at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:389) 
    at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:548) 
    at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:533) 
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:966) 
    at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:533) 
    at com.android.tools.idea.rendering.RenderTask.lambda$inflate$53(RenderTask.java:659) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

Может сом eone, пожалуйста, выделите, в чем проблема с TabItem.

Снятие TabItem устранит всю эту ошибку. Наконец, обратите внимание, что приложение работает нормально, без ошибок на телефоне/эмуляторе.

Спасибо за помощь!

+2

любезно опубликовать ваш 'MainActivity' код – Max

+0

Может у разместить свой' MainActivity.class' код – Sourabh

+0

MainActivity.class не имеет никакого эффекта, так что я использовал сделать это: добавить TabItem, затем появится ошибка, а затем удалить TabItem, а затем удалить ошибку. Следовательно, это не имеет ничего общего с кодом Java внутри класса MainActivity. –

ответ

1

Ничего не вышло. Я перезапустил Android Studio, и ошибка была удалена.
Обратите внимание: мы можем добавить как текст, так и значок. Вот картинка для компоновки приложения:

enter image description here

0
<android.support.design.widget.TabLayout 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent"> 

    <android.support.design.widget.TabItem 
     android:text="@string/tab_text"/> 

    <android.support.design.widget.TabItem 
     android:icon="@drawable/ic_android"/> 

</android.support.design.widget.TabLayout> 

глядя на код, указанный на Android Devp website, я думаю, только текст или значок может быть дан здесь, но не оба.

Попробуйте.

+0

обратите внимание, что вы можете добавить значок и текст в ItemTab –

+0

Я использовал пользовательский элемент табуляции для добавления изображений и текста, не знал, что это возможно напрямую. Спасибо за это –