Android 自定义视图膨胀错误
我有一个简单的自定义视图:Android 自定义视图膨胀错误,android,inflate-exception,Android,Inflate Exception,我有一个简单的自定义视图: public class ScrollDisabledViewPager extends ViewPager { public ScrollDisabledViewPager(Context context) { super(context); } public ScrollDisabledViewPager(Context context, AttributeSet attrs) { super(conte
public class ScrollDisabledViewPager extends ViewPager {
public ScrollDisabledViewPager(Context context) {
super(context);
}
public ScrollDisabledViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return false;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
return false;
}
}
当我将此视图放入XML布局时,它不会膨胀:
XML:
Stacktrace显示了ClassNotFound异常,但我不明白为什么:该类是公共的,并且我有两个构造函数。下面是相关错误消息:
java.lang.ClassNotFoundException:未找到类“com.lol.firebase.ui.SignUpActivity.ScrollDisabledViewPage”
请确保类ScrollDisabledViewPage
位于包com.lol.firebase.ui.SignUpActivity
但是,如果我的猜测是正确的,那么您应该在xml布局中定义com.lol.firebase.ui.scrolldisabledviewpage
,而不是com.lol.firebase.ui
,我猜您的类在com.lol.firebase.ui
中
...other xml layout
<com.lol.firebase.ui.ScrollDisabledViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
...other xml layout
…其他xml布局
…其他xml布局
基于公共类ScrollDisabledViewPage
,我猜这不是SignUpActivity.java的嵌套类
但你的错误似乎是指它是一个
com.lol.firebase.ui.SignUpActivity.ScrollDisabledViewPage
您可以尝试将该类移动到com.lol.firebase.ui
包中,如果还没有,但是XML必须匹配package+“+”className
您是否尝试过将其作为嵌套类?@cricket_007 yep thx,当我将其移动到根包时,它起到了帮助作用
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lol.firebase/com.lol.firebase.ui.SignUpActivity}: android.view.InflateException: Binary XML file line #9: Error inflating class com.lol.firebase.ui.SignUpActivity.ScrollDisabledViewPager
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2660)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2730)
at android.app.ActivityThread.access$800(ActivityThread.java:185)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1567)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5847)
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:1010)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class com.lol.firebase.ui.SignUpActivity.ScrollDisabledViewPager
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:812)
at android.view.LayoutInflater.inflate(LayoutInflater.java:510)
at android.view.LayoutInflater.inflate(LayoutInflater.java:420)
at android.view.LayoutInflater.inflate(LayoutInflater.java:371)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:292)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at com.lol.firebase.ui.SignUpActivity.onCreate(SignUpActivity.java:29)
at android.app.Activity.performCreate(Activity.java:6117)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2613)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2730)
at android.app.ActivityThread.access$800(ActivityThread.java:185)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1567)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5847)
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:1010)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.lol.firebase.ui.SignUpActivity.ScrollDisabledViewPager" on path: DexPathList[[zip file "/data/app/com.lol.firebase-1/base.apk", zip file "/data/app/com.lol.firebase-1/split_lib_dependencies_apk.apk", zip file "/data/app/com.lol.firebase-1/split_lib_slice_0_apk.apk", zip file "/data/app/com.lol.firebase-1/split_lib_slice_1_apk.apk", zip file "/data/app/com.lol.firebase-1/split_lib_slice_2_apk.apk", zip file "/data/app/com.lol.firebase-1/split_lib_slice_3_apk.apk", zip file "/data/app/com.lol.firebase-1/split_lib_slice_4_apk.apk", zip file "/data/app/com.lol.firebase-1/split_lib_slice_5_apk.apk", zip file "/data/app/com.lol.firebase-1/split_lib_slice_6_apk.apk", zip file "/data/app/com.lol.firebase-1/split_lib_slice_7_apk.apk", zip file "/data/app/com.lol.firebase-1/split_lib_slice_8_apk.apk", zip file "/data/app/com.lol.firebase-1/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.lol.firebase-1/lib/arm64, /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:577)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:749)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:812)
at android.view.LayoutInflater.inflate(LayoutInflater.java:510)
at android.view.LayoutInflater.inflate(LayoutInflater.java:420)
at android.view.LayoutInflater.inflate(LayoutInflater.java:371)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:292)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at com.lol.firebase.ui.SignUpActivity.onCreate(SignUpActivity.java:29)
at android.app.Activity.performCreate(Activity.java:6117)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2613)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2730)
at android.app.ActivityThread.access$800(ActivityThread.java:185)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1567)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5847)
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:1010)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
Suppressed: java.lang.ClassNotFoundException: com.lol.firebase.ui.SignUpActivity.ScrollDisabledViewPager
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)
... 23 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
...other xml layout
<com.lol.firebase.ui.ScrollDisabledViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
...other xml layout