android - 如何解决 android.view.InflateException:二进制 XML 文件行并且无法实例化一个或多个类
问题描述
我对这个问题感到非常沮丧,我尝试了所有方法来解决这类问题,但无法解决。
我正在使用这个Ramdom 圆形菜单库
请帮助我
Logcat 错误
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.codecrafted.udit.circlemenu/com.codecrafted.udit.circlemenu.MainActivity}: android.view.InflateException: Binary XML file line #12: Binary XML file line #12: Error inflating class com.ramotion.circlemenu.CircleMenuView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2747)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2808)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1541)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:165)
at android.app.ActivityThread.main(ActivityThread.java:6365)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:883)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
Caused by: android.view.InflateException: Binary XML file line #12: Binary XML file line #12: Error inflating class com.ramotion.circlemenu.CircleMenuView
Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class com.ramotion.circlemenu.CircleMenuView
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
at android.view.LayoutInflater.createView(LayoutInflater.java:652)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:812)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:752)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:883)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:846)
at android.view.LayoutInflater.inflate(LayoutInflater.java:522)
at android.view.LayoutInflater.inflate(LayoutInflater.java:430)
at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at com.codecrafted.udit.circlemenu.MainActivity.onCreate(MainActivity.java:18)
at android.app.Activity.performCreate(Activity.java:6852)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2700)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2808)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1541)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:165)
at android.app.ActivityThread.main(ActivityThread.java:6365)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:883)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0xffffffff
at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:201)
at android.content.res.MiuiResourcesImpl.getValue(MiuiResourcesImpl.java:94)
at android.content.res.Resources.getValue(Resources.java:1304)
at android.support.v7.widget.AppCompatDrawableManager.createDrawableIfNeeded(AppCompatDrawableManager.java:235)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:200)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:191)
at android.support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources.java:102)
at android.support.v7.widget.AppCompatImageHelper.setImageResource(AppCompatImageHelper.java:86)
at android.support.design.widget.FloatingActionButton.setImageResource(FloatingActionButton.java:478)
at com.ramotion.circlemenu.CircleMenuView.initButtons(CircleMenuView.java:365)
at com.ramotion.circlemenu.CircleMenuView.<init>(CircleMenuView.java:243)
at com.ramotion.circlemenu.CircleMenuView.<init>(CircleMenuView.java:189)
我的java代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final CircleMenuView menu = findViewById(R.id.circle_menu);
menu.setEventListener(new CircleMenuView.EventListener() {
@Override
public void onMenuOpenAnimationStart(@NonNull CircleMenuView view) {
Log.d("D", "onMenuOpenAnimationStart");
}
@Override
public void onMenuOpenAnimationEnd(@NonNull CircleMenuView view) {
Log.d("D", "onMenuOpenAnimationEnd");
}
@Override
public void onMenuCloseAnimationStart(@NonNull CircleMenuView view) {
Log.d("D", "onMenuCloseAnimationStart");
}
@Override
public void onMenuCloseAnimationEnd(@NonNull CircleMenuView view) {
Log.d("D", "onMenuCloseAnimationEnd");
}
@Override
public void onButtonClickAnimationStart(@NonNull CircleMenuView view, int index) {
Log.d("D", "onButtonClickAnimationStart| index: " + index);
}
@Override
public void onButtonClickAnimationEnd(@NonNull CircleMenuView view, int index) {
Log.d("D", "onButtonClickAnimationEnd| index: " + index);
}
@Override
public boolean onButtonLongClick(@NonNull CircleMenuView view, int index) {
Log.d("D", "onButtonLongClick| index: " + index);
return true;
}
@Override
public void onButtonLongClickAnimationStart(@NonNull CircleMenuView view, int index) {
Log.d("D", "onButtonLongClickAnimationStart| index: " + index);
}
@Override
public void onButtonLongClickAnimationEnd(@NonNull CircleMenuView view, int index) {
Log.d("D", "onButtonLongClickAnimationEnd| index: " + index);
}
});
}
}
xml 消息
The following classes could not be instantiated:
- com.ramotion.circlemenu.CircleMenuView (Open Class, Show Exception, Clear Cache)
Tip: Use View.isInEditMode() in your custom views to skip code or show sample data when shown in the IDE. If this is an unexpected error you can also try to build the project, then manually refresh the layout. Exception Details java.lang.UnsupportedOperationException at android.content.res.Resources_Delegate.obtainTypedArray(Resources_Delegate.java:531) at android.content.res.Resources.obtainTypedArray(Resources.java:615) at com.ramotion.circlemenu.CircleMenuView.<init>(CircleMenuView.java:208) at com.ramotion.circlemenu.CircleMenuView.<init>(CircleMenuView.java:189) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:863) at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72) at android.view.LayoutInflater.rInflate(LayoutInflater.java:837) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) at android.view.LayoutInflater.inflate(LayoutInflater.java:515) at android.view.LayoutInflater.inflate(LayoutInflater.java:394) Copy stack to clipboard
我不知道如何使用 View.isInEditMode() 请告诉我怎么做。这可能会解决问题
xml代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
app:button_colors="@array/colors"
app:button_icons="@array/icons"
android:background="#000"
>
<com.ramotion.circlemenu.CircleMenuView
android:id="@+id/circle_menu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:button_colors="@array/colors"
app:button_icons="@array/icons"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</RelativeLayout>
解决方案
消除
app:button_colors="@array/colors"
app:button_icons="@array/icons"
从RelativeLayout
推荐阅读
- reactjs - PeerJs 调用流功能在 Safari iOS 上不起作用
- java - 每次应用启动后执行警报管理器,而不是设置时间段
- javascript - 为什么控制台日志在由外部 webapp 而不是 head 运行时不显示在执行中?
- java - 有没有办法等待传输的完成状态?
- scatter-plot - 仅具有 x 轴的散点图
- optimization - Rust Range.contains 未能内联/优化
- angular - 如何使用来自服务器的新惰性路由更新 Angular 10+ 路由?
- javascript - 如何在打字稿/javascript中将异步常量分配给对象的属性
- html - 我不知道为什么暗/亮模式没有改变在第二页上不起作用
- snowflake-cloud-data-platform - 我的 Snowflake UI 会话在四个小时不活动后不会过期。我该如何解决这个问题?