Android导航抽屉崩溃

时间:2016-03-12 23:22:13

标签: android

我正在尝试在此Google教程之后在我的应用上添加导航抽屉:

https://codelabs.developers.google.com/codelabs/material-design-style/index.html?index=..%2F..%2Findex#5

我设法添加了FAB按钮但是当我添加导航抽屉时,我的应用程序在我的平板电脑上崩溃了。为什么会崩溃?这是我尝试的第二个教程,它也使它崩溃。

public class Agenda extends AppCompatActivity
{
    private Toolbar toolbar;
    private FloatingActionButton fab;
    private DrawerLayout mDrawerLayout;
    private NavigationView navigationView;
    /** Called when the activity is first created. */    
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });

    // Create Navigation drawer and inflate layout
    navigationView = (NavigationView) findViewById(R.id.nav_view);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer);

    // Adding menu icon to Toolbar
    ActionBar supportActionBar = getSupportActionBar();
    if (supportActionBar != null) {
        supportActionBar.setHomeAsUpIndicator(R.drawable.ic_menu_white_24dp);
        supportActionBar.setDisplayHomeAsUpEnabled(true);
    }

    // Set behavior of Navigation drawer
    navigationView.setNavigationItemSelectedListener(
        new NavigationView.OnNavigationItemSelectedListener() {
            // This method will trigger on item Click of navigation menu
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {
                // Set item in checked state
                menuItem.setChecked(true);
                // TODO: handle navigation
                // Closing drawer on item click
                mDrawerLayout.closeDrawers();
                return true;
            }
        });
    mDrawerLayout.openDrawer(GravityCompat.START);
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
    getMenuInflater().inflate(R.menu.menu,menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    } else if (id == android.R.id.home) {
        mDrawerLayout.openDrawer(GravityCompat.START);
    }
    return super.onOptionsItemSelected(item);
}
}

main xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">
    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/main_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout android:layout_width="match_parent"
                      android:layout_height="match_parent"
                      android:id="@+id/ll"
                      android:orientation="vertical">
            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:background="?attr/colorPrimary"
                android:elevation="6dp"
                android:minHeight="?attr/actionBarSize"
                android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            />
        </LinearLayout>
        <android.support.design.widget.FloatingActionButton
                android:id="@+id/fab"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right|bottom"
                android:src="@drawable/ic_delete_black" />
    </android.support.design.widget.CoordinatorLayout>
    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/header"
        app:menu="@menu/drawer" />
</android.support.v4.widget.DrawerLayout>

抽屉xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="single">
        <item
            android:icon="@drawable/ic_drafts_black"
            android:tint="@color/button_grey"
            android:title="One" />
        <item
            android:icon="@drawable/ic_drafts_black"
            android:tint="@color/button_grey"
            android:title="Two" />
        <item
            android:icon="@drawable/ic_drafts_black"
            android:tint="@color/button_grey"
            android:title="Three" />
    </group>
</menu>

标题xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="@dimen/navheader_height"
    android:background="?attr/colorPrimaryDark"
    android:orientation="vertical"
    android:padding="@dimen/md_keylines">
</LinearLayout>

编辑:这是崩溃日志:

[ 03-13 19:34:24.460  5057: 5057 E/AndroidRuntime ]

FATAL EXCEPTION: main

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cohen.agenda/com.cohen.agenda.Agenda}: android.view.InflateException: Binary XML file line #36: Error inflating class android.support.design.widget.NavigationView

    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2262)

    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)

    at android.app.ActivityThread.access$700(ActivityThread.java:158)

    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1296)

    at android.os.Handler.dispatchMessage(Handler.java:99)

    at android.os.Looper.loop(Looper.java:176)

    at android.app.ActivityThread.main(ActivityThread.java:5365)

    at java.lang.reflect.Method.invokeNative(Native Method)

    at java.lang.reflect.Method.invoke(Method.java:511)

    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)

    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)

    at dalvik.system.NativeStart.main(Native Method)

Caused by: android.view.InflateException: Binary XML file line #36: Error inflating class android.support.design.widget.NavigationView

    at android.view.LayoutInflater.createView(LayoutInflater.java:619)

    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:693)

    at android.view.LayoutInflater.rInflate(LayoutInflater.java:752)

    at android.view.LayoutInflater.inflate(LayoutInflater.java:495)

    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)

    at android.view.LayoutInflater.inflate(LayoutInflater.java:353)

    at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276)

    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)

    at com.cohen.agenda.Agenda.onCreate(Agenda.java:26)

    at android.app.Activity.performCreate(Activity.java:5326)

    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)

    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2225)

    ... 11 more

Caused by: java.lang.reflect.InvocationTargetException

    at java.lang.reflect.Constructor.constructNative(Native Method)

    at java.lang.reflect.Constructor.newInstance(Constructor.java:417)

    at android.view.LayoutInflater.createView(LayoutInflater.java:593)

    ... 22 more

Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class android.support.design.internal.NavigationMenuView

    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)

    at android.view.LayoutInflater.inflate(LayoutInflater.java:467)

    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)

    at android.support.design.internal.NavigationMenuPresenter.getMenuView(NavigationMenuPresenter.java:96)

    at android.support.design.widget.NavigationView.<init>(NavigationView.java:166)

    at android.support.design.widget.NavigationView.<init>(NavigationView.java:95)

    ... 25 more

Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.design.internal.NavigationMenuView" on path: /data/app/com.cohen.agenda-15.apk

    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65)

    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)

    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)

    at android.view.LayoutInflater.createView(LayoutInflater.java:558)

    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:693)

    ... 30 more

0 个答案:

没有答案