无法充气自定义viewpager

时间:2017-01-15 03:01:53

标签: android android-layout android-fragments android-viewpager

大家好,我有这个自定义视图寻呼机,我在一个java类。当我将该viewpager放入xml并运行该程序时,它崩溃了。从堆栈跟踪看起来它看起来在错误的地方,但我不知道如何解决它。

这是我的查看分页器类

public class MyViewPager extends ViewPager
    {
        private boolean swipeable;
        public MyViewPager(Context context) {
            super(context);
        }
        public MyViewPager (Context context, AttributeSet attrs) {
            super(context, attrs);
            this.swipeable = true;
        }

        @Override
        public boolean onTouchEvent(MotionEvent event) {

            if (this.swipeable) {

                return super.onTouchEvent(event);

            }
            return false;
        }
        @Override
        public boolean onInterceptTouchEvent(MotionEvent event) {

            if (this.swipeable) {

                return super.onInterceptTouchEvent(event);

            }
            return  false;
        }
        public void setSwipeable(boolean swipeable) {

            this.swipeable = swipeable;

        }

    }

这是我的xml

<android.support.design.widget.TabLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/main_TL"
            app:tabTextColor="@color/white"
            app:tabSelectedTextColor="@color/white"
            app:tabMaxWidth="0dp"
            app:tabGravity="fill"
            app:tabMode="fixed"
            app:tabIndicatorColor="@color/white"
            app:tabBackground="@color/salmon_main"/>
        <com.daprlabs.aaron.zivitApp.Main.Main.MyViewPager
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/main_VP">
        </com.daprlabs.aaron.zivitApp.Main.Main.MyViewPager>

这是我的堆栈跟踪:

 Process: com.daprlabs.aaron.swipedeck2, PID: 17841
                                                                               java.lang.RuntimeException: Unable to start activity ComponentInfo{com.daprlabs.aaron.swipedeck2/com.daprlabs.aaron.zivitApp.Main.Main}: android.view.InflateException: Binary XML file line #35: Binary XML file line #35: Error inflating class com.daprlabs.aaron.zivitApp.Main.Main.MyViewPager
                                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2434)
                                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
                                                                                   at android.app.ActivityThread.access$900(ActivityThread.java:157)
                                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1356)
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                   at android.os.Looper.loop(Looper.java:148)
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5525)
                                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
                                                                                Caused by: android.view.InflateException: Binary XML file line #35: Binary XML file line #35: Error inflating class com.daprlabs.aaron.zivitApp.Main.Main.MyViewPager
                                                                                   at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
                                                                                   at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
                                                                                   at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
                                                                                   at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)
                                                                                   at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:143)
                                                                                   at com.daprlabs.aaron.zivitApp.Main.Main.onCreate(Main.java:49)
                                                                                   at android.app.Activity.performCreate(Activity.java:6272)
                                                                                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387)
                                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494) 
                                                                                   at android.app.ActivityThread.access$900(ActivityThread.java:157) 
                                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1356) 
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                   at android.os.Looper.loop(Looper.java:148) 
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5525) 
                                                                                   at java.lang.reflect.Method.invoke(Native Method) 
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730) 
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620) 
                                                                                Caused by: android.view.InflateException: Binary XML file line #35: Error inflating class com.daprlabs.aaron.zivitApp.Main.Main.MyViewPager
                                                                                   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:776)
                                                                                   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
                                                                                   at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
                                                                                   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
                                                                                   at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
                                                                                   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
                                                                                   at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
                                                                                   at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
                                                                                   at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
                                                                                   at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) 
                                                                                   at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:143) 
                                                                                   at com.daprlabs.aaron.zivitApp.Main.Main.onCreate(Main.java:49) 
                                                                                   at android.app.Activity.performCreate(Activity.java:6272) 
                                                                                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
                                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387) 
                                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494) 
                                                                                   at android.app.ActivityThread.access$900(ActivityThread.java:157) 
                                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1356) 
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                   at android.os.Looper.loop(Looper.java:148) 
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5525) 
                                                                                   at java.lang.reflect.Method.invoke(Native Method) 
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730) 
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620) 
                                                                                Caused by: java.lang.ClassNotFoundException: Didn't find class "com.daprlabs.aaron.zivitApp.Main.Main.MyViewPager" on path: DexPathList[[zip file "/data/app/com.daprlabs.aaron.swipedeck2-1/base.apk"],nativeLibraryDirectories=[/data/app/com.daprlabs.aaron.swipedeck2-1/lib/arm64, /data/app/com.daprlabs.aaron.swipedeck2-1/base.apk!/lib/arm64-v8a, /vendor/lib64, /system/lib64]]
                                                                                   at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                                                                                   at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
                                                                                   at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
                                                                                   at android.view.LayoutInflater.createView(LayoutInflater.java:583)
                                                                                   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764)
                                                                                   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
                                                                                   at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
                                                                                   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
                                                                                   at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 
                                                                                   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
                                                                                   at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
                                                                                   at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
                                                                                   at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
                                                                                   at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) 
                                                                                   at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:143) 
                                                                                   at com.daprlabs.aaron.zivitApp.Main.Main.onCreate(Main.java:49) 
                                                                                   at android.app.Activity.performCreate(Activity.java:6272) 
                                                                                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
                                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387) 
                                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494) 
                                                                                   at android.app.ActivityThread.access$900(ActivityThread.java:157) 
                                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1356) 
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                   at android.os.Looper.loop(Looper.java:148) 
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5525) 
                                                                                   at java.lang.reflect.Method.invoke(Native Method) 
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730) 
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620) 
                                                                                Suppressed: java.lang.ClassNotFoundException: com.daprlabs.aaron.zivitApp.Main.Main.MyViewPager
                                                                                   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)
                                                                                        ... 26 more
                                                                                Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

EDITED

我的项目结构:

enter image description here

1 个答案:

答案 0 :(得分:3)

在我的评论中,我提到我们需要为视图创建一个单独的类,例如MyViewPager.java因为我们不能在内部类中对视图进行充气,因为它依赖于它的顶级类(inflater对于那个工作并不聪明,也不容易开发这种类型的inflater),其他选择是声明它是静态的。

相关问题