web-dev-qa-db-ja.com

クラスが見つかりませんAndroidサポートデザインウィジェットNavigationView

こんにちは、私を助けてくれますか。エミュレーターでコードをコンパイル/実行すると、このエラーが発生しました。これは、私が以前作成したサンプルチュートリアルです。私はmin Target API-15を使用して、最新のGradleをコンパイルしました'com.Android.support:design:23.0.0'

http://www.Android4devs.com/2015/06/navigation-view-material-design-support.html

コードエラー:

AndroidRuntime:Java.lang.RuntimeException:Unable to start activity ComponentInfo {com.eccp.projects.ecosavers.ecosavers/com.eccp.projects.ecosavers.ecosavers.activities.MainActivity}:Android.view。 InflateException:Binary XML file line#29:Binary XML file line#29:Error inflatating class Android.support.design.widget.NavigationView12-29 06 :43:39.409 3448-3448/com.eccp.projects.ecosavers.ecosavers E/AndroidRuntime:at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2416)

E/AndroidRuntime:原因:Android.view.InflateException:Binary XML file line#29:Binary XML file line#29:Error inflatating class Android.support.design.widget.NavigationView

これが私のコードです:MainActivity.Java

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

    //SET my own toolbar
    toolbar = (Toolbar) findViewById(R.id.tool_bar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);

    mNavigationView = (NavigationView) findViewById(R.id.navigation_view);

    mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {

        @Override
        public boolean onNavigationItemSelected(MenuItem menuItem) {
            if (menuItem.isChecked()) menuItem.setChecked(false);
            else menuItem.setChecked(true);

            //Closing drawer on item click
            mDrawerlayout.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.events:
                    Toast.makeText(getApplicationContext(), "Inbox Selected", Toast.LENGTH_SHORT).show();
                    Eco_events fragment = new Eco_events();
                    Android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
                    fragmentTransaction.replace(R.id.frame, fragment);
                    fragmentTransaction.commit();
                    return true;

                //  show a toast on click

                case R.id.activities:
                    Toast.makeText(getApplicationContext(), "Send 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
    mDrawerlayout = (DrawerLayout) findViewById(R.id.drawer);
    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerlayout, toolbar, R.string.drawerOpened, R.string.drawerOpened) {

        @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
    mDrawerlayout.setDrawerListener(mDrawerToggle);

    //calling sync state is
    mDrawerToggle.syncState();


}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    return super.onOptionsItemSelected(item);
}

XML:activity_main.xml

<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/res-auto"
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/tool_bar"
        layout="@layout/toolbar"
        />
    <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/header"
    app:menu="@menu/drawer"
    /> </Android.support.v4.widget.DrawerLayout>
7
RoCk RoCk

次の手順に従ってください:

  1. Project->Open Module Settingsを右クリックします。
  2. 次に、[依存関係]タブを開きます。
  3. +記号をクリックし、[ライブラリの依存関係]を選択します。[ライブラリの依存関係の選択]というポップアップが表示されます。
  4. そこで「com.Android.support」と入力します。次に、検索アイコンをクリックします。

  1. 次に、デザインライブラリを選択します。 OKをクリックします。
25
Vignesh

ご心配いただきありがとうございます。ようやくこの質問に対する答えが見つかりました。

クラスAndroid.support.design.widget.NavigationView#28または#29のインフレート中にエラーが発生しました

私にとって有効な解決策は、あなたのsupport design libraryとあなたのサポートAppCompat Libraryを一致させる必要があるということです。 Gradleモジュールでは、

Locate Gradle

gradleバージョンを変更します(目的のライブラリ番号)。最新のGradleビルドは、指定したリンクでも見つけることができますが、Gradleモジュールをチェックインすることをお勧めします(2番目の画像。次に、私のgradleモジュールで-compile: ...が強調表示されています。つまり、新しいバージョンがあるため、番号を変更するだけです。例:24.0.0安定していない場合はコンパイルし、プレビューしないでください)、それまではは23.1.1です。

-> more gradle lib- gradleplease.appspot.com

compile 'com.Android.support:appcompat-v7:23.1.1'

compile 'com.Android.support:design:23.1.1'

Gradle Dependencies

:) わたしにはできる!

観察(私にとっては、このエラーを変更または解決したため、値23.x.x):support-designAppCompat-libと一致しない場合# 28およびAppCompatsupport-designと一致しない場合、#29 。試してみて、多分私は#を交換します。

3
RoCk RoCk

デザインサポートライブラリが必要なため、このエラーが発生しています。

SDK Managerを開いて、Android Support Repositoryをダウンロードしてください。ライブラリの最新バージョンはこちらから入手できます。

<Android-sdk>/extras/Android/m2repository/com/Android/support/design/23.0.1/design-23.0.1.aar

Libsディレクトリにコピーしてから、build.gradleに依存関係を追加します。

repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    compile 'Android.support.design:design:23.0.1@aar'
}
0
Soft Kaka