Android SnackBar дает исключение и не работает

Я пробовал новую Snackbar из официальной библиотеки дизайна. предоставлено Google. Я загрузил новую библиотеку дизайна через SDK и поместил ее в папку libs. Я использую eclipse, и всякий раз, когда я пытался его запустить, он дает исключение. Я не хочу использовать какие-либо дополнительные сторонние библиотеки, кроме Google.

код Java

import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;


public class MainActivity extends AppCompatActivity  {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Snackbar.make(v, "hello", Snackbar.LENGTH_LONG)
                        .setAction("Action!", new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                // NOP
                            }
                        })
                        .show();
            }
        });

    }

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.examples.androidmpreview.MainActivity"
    android:id="@+id/rl_parent" >

    <LinearLayout
        android:id="@+id/ll_vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" />

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textView1"
            android:layout_marginLeft="50dp"
            android:layout_marginTop="104dp"
            android:layout_toRightOf="@+id/textView1"

            android:text="Button" />
    </LinearLayout>

</RelativeLayout>

Ошибка

FATAL EXCEPTION: main
Process: com.examples.androidmpreview, PID: 26176
 java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/design/R$layout;
at android.support.design.widget.Snackbar.<init>(Snackbar.java:119)
at android.support.design.widget.Snackbar.make(Snackbar.java:140)
at com.examples.androidmpreview.MainActivity$1.onClick(MainActivity.java:20)
at android.view.View.performClick(View.java:4761)
at android.view.View$PerformClick.run(View.java:19767)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5312)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.design.R$layout" on path: DexPathList[[zip file "/data/app/com.examples.androidmpreview-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
... 13 more
Suppressed: java.lang.ClassNotFoundException: android.support.design.R$layout
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 14 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

пробная ссылка

Android SnackBar: ошибка при раздувании SnackbarLayout


person Amandeep Rohila    schedule 09.06.2015    source источник
comment
столько раз спрашивали... вы неправильно настроили эту библиотеку... перейдите на d.android.com и узнайте, как установить библиотеку поддержки для вашей IDE   -  person Selvin    schedule 09.06.2015
comment
возможный дубликат Android SnackBar не работает   -  person Bahman_Aries    schedule 09.06.2015
comment
я поместил android-support-design.jar в папку libs -> путь сборки -> Добавить в путь сборки   -  person Amandeep Rohila    schedule 09.06.2015
comment
нет не дублируется   -  person Amandeep Rohila    schedule 09.06.2015
comment
ваш код работает нормально. Только сейчас проверил. Думаю проблема только с библиотекой. Пожалуйста, убедитесь, что вы правильно добавили библиотеку   -  person Chandru    schedule 09.06.2015
comment
я поместил android-support-design.jar в папку libs -> путь сборки -> Добавить в путь сборки этого недостаточно!!!   -  person Selvin    schedule 09.06.2015
comment
почему вы используете eclipse, кстати?   -  person njzk2    schedule 09.06.2015
comment
Проверьте эту ссылку: developer.android.com/tools/ support-library/ И пора переходить на Android Studio.   -  person Gabriele Mariotti    schedule 09.06.2015
comment
да я уже проверил. в этой ссылке я искал добавление библиотек без ресурсов, и он отлично работает во время компиляции.   -  person Amandeep Rohila    schedule 09.06.2015
comment
@Selvin Я видел документацию по добавлению библиотек без ресурсов с developer.android.com/ tools/support-library/setup.html и найдено 1. Убедитесь, что вы загрузили библиотеку поддержки Android с помощью диспетчера SDK. 2. Создайте каталог libs/ в корне вашего проекта приложения. 3. Скопируйте файл JAR из каталога установки Android SDK (например, ‹sdk›/extras/android/support/v4/android-support-v4.jar) в каталог libs/ проекта вашего приложения. 4. Щелкните файл JAR правой кнопкой мыши и выберите Путь сборки › Добавить в путь сборки.   -  person Amandeep Rohila    schedule 09.06.2015
comment
Я видел документацию Добавление библиотек без ресурсов угадайте, что означает R в android/support/design/R$layout...   -  person Selvin    schedule 09.06.2015
comment
R — это класс, содержащий определения для всех ресурсов определенного пакета приложения. но m не получает то, что является base.apk из android.support.design.R$layout по пути: DexPathList[[zip file /data/app/com.examples.androidmpreview-2/base.apk],nativeLibraryDirectories=[/ поставщик/библиотека, /система/библиотека]]   -  person Amandeep Rohila    schedule 09.06.2015
comment
@AmanRohila Вы должны проверить библиотеки с ресурсами!   -  person Gabriele Mariotti    schedule 10.06.2015


Ответы (2)


Решено! Сначала я удалил android-support-v4.jar из папки libs из проекта, а затем добавил библиотеку android-support-design с ресурсами [также добавил библиотеку поддержки]. После этого свойства проекта->Android->Добавить->Поддержка библиотеки дизайна.

person Amandeep Rohila    schedule 10.06.2015

Нет необходимости удалять android-support-v4.jar.

Щелкните правой кнопкой мыши Project->BuildPath->Configure Buildpath. Щелкните вкладку «Библиотеки», а затем нажмите «Добавить внешние библиотеки».

Выберите {путь к adt}/sdk/extras/android/support/design/libs. Выберите android-support-design.jar, нажмите «Открыть», чтобы добавить эту библиотеку.

Нажмите «ОК». Это сработало для меня.

введите здесь описание изображения

person Junaid    schedule 07.08.2015