2015-10-08 2 views
1

Я последовал за учебник нового компонента NavigationView в поддержке библиотеки проектирования и не может пройти через это сообщение об ошибкеBinary инфлятор: Ошибка класса накачивания android.support.design.widget.NavigationView

java.lang.RuntimeException : Не удается запустить активность ComponentInfo {com.encore/com.encore.NavViewActivity}: android.view.InflateException: Binary XML файл строка # 27: Ошибка при наполнении класса android.support.design.widget.NavigationView

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <!-- 
      Theme customizations available in newer API levels can go in 
      res/values-vXX/styles.xml, while customizations related to 
      backward-compatibility can go here. 
     --> 
     <item name="android:colorPrimary">@color/PrimaryColor</item> 
     <item name="android:colorPrimaryDark">@color/PrimaryDarkColor</item> 
     <item name="windowActionModeOverlay">true</item> 
     <item name="android:windowDrawsSystemBarBackgrounds">true</item> 
     <item name="android:statusBarColor">@android:color/transparent</item> 
    </style> 

    <!-- Application theme. --> 
    <style name="AppTheme" parent="AppBaseTheme"> 

     <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
    </style> 

la Yout файл

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:app="http://schemas.android.com/apk/lib/com.encore.NavViewActivity" 
android:id="@+id/drawer" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:context=".MainActivity"> 

<LinearLayout 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:orientation="vertical"> 
    <include 
     android:id="@+id/toolbar" 
     layout="@layout/tool_bar" 
    /> 
    <FrameLayout 
     android:id="@+id/frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

    </FrameLayout> 

</LinearLayout> 

<android.support.design.widget.NavigationView 
    android:id="@+id/navigation_view" 
    android:layout_height="match_parent" 
    android:layout_width="wrap_content" 
    android:layout_gravity="start" 
    app:headerLayout="@layout/nav_header" 
    app:menu="@menu/drawer" 
    /> 

Java файл

import android.app.FragmentManager; 
import android.app.FragmentTransaction; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.AsyncTask; 
import android.support.design.widget.NavigationView; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.Toolbar; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.SubMenu; 
import android.view.View; 
import android.widget.Toast; 

public class NavViewActivity extends AppCompatActivity { 

    //Defining Variables 
    private Toolbar toolbar; 
    private NavigationView navigationView; 
    private DrawerLayout drawerLayout; 

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

     // Initializing Toolbar and setting it as the actionbar 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     //Initializing NavigationView 
     navigationView = (NavigationView) findViewById(R.id.navigation_view); 

     //Setting Navigation View Item Selected Listener to handle the item click of the navigation menu 
     navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 

      // This method will trigger on item Click of navigation menu 
      @Override 
      public boolean onNavigationItemSelected(MenuItem menuItem) { 


       //Checking if the item is in checked state or not, if not make it in checked state 
       if(menuItem.isChecked()) menuItem.setChecked(false); 
       else menuItem.setChecked(true); 

       //Closing drawer on item click 
       drawerLayout.closeDrawers(); 

       //Check to see which item was being clicked and perform appropriate action 
       switch (menuItem.getItemId()){ 


        //Replacing the main content with ContentFragment Which is our Inbox View; 
        case R.id.inbox: 
         Toast.makeText(getApplicationContext(),"Inbox Selected",Toast.LENGTH_SHORT).show(); 
         ContentFragment fragment = new ContentFragment(); 
         android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
         fragmentTransaction.replace(R.id.frame,fragment); 
         fragmentTransaction.commit(); 
         return true; 

        // For rest of the options we just show a toast on click 

        case R.id.starred: 
         Toast.makeText(getApplicationContext(),"Stared Selected",Toast.LENGTH_SHORT).show(); 
         return true; 
        case R.id.sent_mail: 
         Toast.makeText(getApplicationContext(),"Send Selected",Toast.LENGTH_SHORT).show(); 
         return true; 
        case R.id.drafts: 
         Toast.makeText(getApplicationContext(),"Drafts Selected",Toast.LENGTH_SHORT).show(); 
         return true; 
        case R.id.allmail: 
         Toast.makeText(getApplicationContext(),"All Mail Selected",Toast.LENGTH_SHORT).show(); 
         return true; 
        case R.id.trash: 
         Toast.makeText(getApplicationContext(),"Trash Selected",Toast.LENGTH_SHORT).show(); 
         return true; 
        case R.id.spam: 
         Toast.makeText(getApplicationContext(),"Spam Selected",Toast.LENGTH_SHORT).show(); 
         return true; 
        default: 
         Toast.makeText(getApplicationContext(),"Somethings Wrong",Toast.LENGTH_SHORT).show(); 
         return true; 
       } 
      } 
     }); 

     // Initializing Drawer Layout and ActionBarToggle 
     drawerLayout = (DrawerLayout) findViewById(R.id.drawer); 
     ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this,drawerLayout,toolbar,R.string.openDrawer, R.string.closeDrawer){ 

      @Override 
      public void onDrawerClosed(View drawerView) { 
       // Code here will be triggered once the drawer closes as we dont want anything to happen so we leave this blank 
       super.onDrawerClosed(drawerView); 
      } 

      @Override 
      public void onDrawerOpened(View drawerView) { 
       // Code here will be triggered once the drawer open as we dont want anything to happen so we leave this blank 

       super.onDrawerOpened(drawerView); 
      } 
     }; 

     //Setting the actionbarToggle to drawer layout 
     drawerLayout.setDrawerListener(actionBarDrawerToggle); 

     //calling sync state is necessay or else your hamburger icon wont show up 
     actionBarDrawerToggle.syncState(); 
    } 
} 
+0

Какая ваша линия 27? – Jas

+1

http://stackoverflow.com/questions/30709419/error-inflating-class-android-support-design-widget-navigationview –

+0

ответ

0

Попробуйте заменить android:layout_gravity="start" с android:layout_gravity="right" внутри NavigationView макета.

+0

та же ошибка comming @ jas –

+0

Установить для цели проекта до 21 или самой доступной версии. Чистить и запускать. – Jas

+0

Да, моя цель проекта только 21 –

2

Я также столкнулся с той же проблемой, ошибка точно, позже я узнал, что здесь не так: Меню-> item->android:icon="@drawable/ic_menu_camera", этот ic_menu_camera заголовок имеет vector используется только в v21 или выше, так что в системе 5,0 или менее использованияКонтактная может получить проблемы, чем вы можете скопировать следующий код в папке значений и Названный «вводимого коэффициента» .Code: <resources xmlns:android="http://schemas.android.com/apk/res/android"> <item name="ic_menu_camera" type="drawable">@android:drawable/ic_menu_camera</item> <item name="ic_menu_gallery" type="drawable">@android:drawable/ic_menu_gallery</item> <item name="ic_menu_slideshow" type="drawable">@android:drawable/ic_menu_slideshow</item> <item name="ic_menu_manage" type="drawable">@android:drawable/ic_menu_manage</item> <item name="ic_menu_share" type="drawable">@android:drawable/ic_menu_share</item> <item name="ic_menu_send" type="drawable">@android:drawable/ic_menu_send</item> </resources>

0

проверить вид навигации путем удаления одного из них и проверить код работает или не

  • приложение : headerLayout = "@ layout/nav_header"
  • приложение: menu = "@ menu/drawer"

Если ваш логарифм говорит, что причиной является resourcenotfoundexception с вышеуказанной ошибкой. проблема может заключаться в файле файла/файла значка в ящиках. если он поступает из меню/ящика, попробуйте изменить значки и добавить значки в папку ящика и в drawer-v21. надеюсь, это поможет