2015-11-26 3 views
1

Я пытаюсь включить этот код Slider library в свой код.Android слайдер библиотеки сбой при включении в мое приложение?

Когда я добавил это мой макет:

<SlidingLayer 
    android:id="@+id/slidingLayer1" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/layer_height" 
    android:elevation="2dip" 
    android:layout_above="@+id/linearLayout" 
    android:layout_alignParentStart="true"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/primary_light"> 

     <WebView 
      android:id="@+id/authWebView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:gravity="center" 
      android:drawablePadding="15dip" 
      android:paddingBottom="80dp" 
      android:textSize="17sp" 
      android:textColor="@color/primary_text"/> 

     <Button 
      android:id="@+id/buttonClose" 
      style="@style/ButtonRed" 
      android:onClick="buttonClicked" 
      android:layout_marginBottom="60dp" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      android:text="@string/close_button_container"/> 
    </RelativeLayout> 
</SlidingLayer> 

и в том числе

private SlidingLayer mSlidingLayer; 

затем, в OnCreate():

setContentView(R.layout.activity_main); 
initSlider(); 

и далее в метод initSlider():

private void initSlider() { 
    mSlidingLayer = (SlidingLayer) findViewById(R.id.slidingLayer1); 
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    setupSlidingLayerPosition(prefs.getString("layer_location", "bottom")); 
    setupSlidingLayerTransform(prefs.getString("layer_transform", "none")); 
    setupShadow(prefs.getBoolean("layer_has_shadow", false)); 
    setupLayerOffset(prefs.getBoolean("layer_has_offset", false)); 
    setupPreviewMode(prefs.getBoolean("preview_mode_enabled", false)); 
} 

тогда как метод установки * внутри initSlider() был взят из here.

Но мое приложение падает на setcontentview в OnCreate() с этим сообщением об ошибке:

E/AndroidRuntime: FATAL ИСКЛЮЧЕНИЕ: главный процесс: com.mysliderapp, PID: 22831 java.lang.RuntimeException: Невозможно начать деятельность ComponentInfo {com.mysliderapp/com.mysliderapp.MainActivity}: android.view.InflateException: Binary XML файл строка # 46: Ошибка класс накачивания SlidingLayer на android.app.ActivityThread.performLaunchActivity (ActivityThread.java : 2205) по адресу android.app.ActivityThread.han dleLaunchActivity (ActivityThread.java:2255) на android.app.ActivityThread.access $ 800 (ActivityThread.java:142) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1203) на android.os.Handler .dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:136) на android.app.ActivityThread.main (ActivityThread.java:5118) на java.lang.reflect.Method .invokeNative (собственный метод) в java.lang.reflect.Method.invoke (Method.java:515) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:794) at com. android.internal.os.ZygoteInit.main (ZygoteInit.java:610) в dalvik.system.NativeStart.main (родной метод) Вызвано: android.view.InflateException: двоичная строка XML-файла # 46: Ошибка раздувания класса SlidingLayer при android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:707) на android.view.LayoutInflater.rInflate (LayoutInflater. java: 755) на android.view.LayoutInflater.inflate (LayoutInflater.java:492) на android.view.LayoutInflater.inflate (LayoutInflater.java:397) на android.view.LayoutInflater.inflate (LayoutInflater.java: 353) на com.android.internal.policy.impl.PhoneWindow.setContentView (PhoneWindow.java:319) на android.app.Activity.setContentView (Activity.java:1973) на com.mysliderapp.MainActivity.onCreate (MainActivity.java:99) на android.app .Activity.performCreate (Activity.java:5275) при android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1087) на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2169) на android.app .ActivityThread.handleLaunchActivity (ActivityThread.java:2255) на android.app.ActivityThread.access $ 800 (ActivityThread.java:142) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1203) в android.os.Handler.dispatchMessage (Handler.java:102) в андроида. os.Looper.loop (Looper.java:136) в android.app.ActivityThread.main (ActivityThread.java:5118) в java.lang.reflect.Method.invokeNative (собственный метод) в java.lang.reflect .Method.invoke (Method.java:515) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:794) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java : 610) на dalvik.system.NativeStart.main (родной метод) Вызвано: java.l ang.ClassNotFoundException: не нашел класс "android.view.SlidingLayer" по пути: DexPathList [[zip-файл "/data/app/com.mysliderapp-2.apk"],nativeLibraryDirectories=[/data/app- lib/com.mysliderapp-2, /vendor/lib,/system/lib]] в dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56) в java.lang.ClassLoader.loadClass (ClassLoader.java: 497) в java.lang.ClassLoader.loadClass (ClassLoader.java:457) в android.view.LayoutInflater.createView (LayoutInflater.java:559) в android.view.LayoutInflater.onCreateView (LayoutInflater.java:652) на com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView (PhoneLayoutInflater.java:66) на android.view.LayoutInflat er.onCreateView (LayoutInflater.java:669) на android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:694) на android.view.LayoutInflater.rInflate (LayoutInflater.java:755) при android.view.LayoutInflater .inflate (LayoutInflater.java:492) на android.view.LayoutInflater.inflate (LayoutInflater.java:397) на android.view.LayoutInflater.inflate (LayoutInflater.java:353) на com.android.internal.policy .impl.PhoneWindow.setContentView (PhoneWindow.java:319) на android.app.Activity.setContentView (Activity.java:1973) на com.mysliderapp.MainActivity.onCreate (MainActivity.java:99) на android.app .Activity.performCreate (Activity.java:5275) в android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1087) на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2169) на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2255) на android.app.ActivityThread.access $ 800 (ActivityThread.java:142) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1203) на android.os.Handler.dispatchMessage (Handler.java:102) На android.os.Looper.loop (Looper.java:136) на android.app.ActivityThread.main (ActivityThread.java:5118) на java.lang.reflect.Method.invokeNative (собственный метод) на java.lang.reflect.Method.invoke (Method.java:515) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:794) at com.android.internal.os.ZygoteInit .main (ZygoteInit.java:610) в dalvik.system.NativeStart.main (метод Native)

ответ

2

Измените ваш SlidingLayer к com.wunderlist.slidinglayer.SlidingLayer в макете XML.

При использовании внешних компонентов Android, как правило, возникают проблемы при раздувании компонента только по имени, поэтому вам нужно указать полное имя пакета.

<com.wunderlist.slidinglayer.SlidingLayer 
    android:id="@+id/slidingLayer1" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/layer_height" 
    android:elevation="2dip" 
    android:layout_above="@+id/linearLayout" 
    android:layout_alignParentStart="true"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/primary_light"> 

     <WebView 
      android:id="@+id/authWebView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:gravity="center" 
      android:drawablePadding="15dip" 
      android:paddingBottom="80dp" 
      android:textSize="17sp" 
      android:textColor="@color/primary_text"/> 

     <Button 
      android:id="@+id/buttonClose" 
      style="@style/ButtonRed" 
      android:onClick="buttonClicked" 
      android:layout_marginBottom="60dp" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      android:text="@string/close_button_container"/> 
    </RelativeLayout> 
</com.wunderlist.slidinglayer.SlidingLayer> 
+0

Благодарю вас, да, я должен был дать путь пут-пакета! –

0

Конечно, это не будет work.Logcat говорит:

Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.SlidingLayer" 

Эти вещи нормальны или что-то вроде общих навыков и возвращает свой поиск или навыки о it.Also, вы можете проверить, что библиотеки образец тоже:

<com.wunderlist.slidinglayer.SlidingLayer 
    xmlns:slidingLayer="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/slidingLayer1" 
    android:layout_width="@dimen/layer_width" 
    android:layout_height="@dimen/layer_height" 
    slidingLayer:shadowDrawable="@drawable/sidebar_shadow" 
    slidingLayer:shadowSize="@dimen/shadow_size" 
    slidingLayer:offsetDistance="@dimen/offset_distance" 
    slidingLayer:previewOffsetDistance="@dimen/preview_offset_distance" 
    slidingLayer:stickTo="top|bottom|right|left" 
    slidingLayer:changeStateOnTap="true"> 

    … 
    … 
</com.wunderlist.slidinglayer.SlidingLayer> 
Смежные вопросы