Java RuntimeException和InflateException:二进制XML文件第7行。。然后是ClassCastException
关于这个问题有很多问题,但我所读到的修复方法似乎都不起作用 似乎不起作用的修复: 我的问题描述: 我正在试着在我的玻璃器皿中加入一个SliderView。SliderView可用作自定义加载屏幕 - 我目前正在使用第一个链接 在我的应用程序中,我调用SearchActivity.java,它做了一些事情。我已经对大部分代码进行了注释以查看问题,问题似乎首先出现在这里:Java RuntimeException和InflateException:二进制XML文件第7行。。然后是ClassCastException,java,android,xml,google-glass,google-gdk,Java,Android,Xml,Google Glass,Google Gdk,关于这个问题有很多问题,但我所读到的修复方法似乎都不起作用 似乎不起作用的修复: 我的问题描述: 我正在试着在我的玻璃器皿中加入一个SliderView。SliderView可用作自定义加载屏幕 - 我目前正在使用第一个链接 在我的应用程序中,我调用SearchActivity.java,它做了一些事情。我已经对大部分代码进行了注释以查看问题,问题似乎首先出现在这里: protected void onCreate(Bundle bundle) { super.onCreate
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.activity_main);
}
以下是可以在my activity_main.xml中找到的内容:位于my res/layout/:
我有两个具体的问题,那就是:
java.lang.RuntimeException:无法启动活动
ComponentInfo{com.google.android.glass.sample.apidement/com.google.android.glass.sample.apidemo.card.SearchActivity}:
及
android.view.InflateException:二进制XML文件第7行:错误
膨胀类
com.google.android.glass.sample.apidemo.card.slideview
LogCat错误:
这是默认的res/layout/slider xml:
更新:
解决办法如下:
在SliderView.java构造函数公共SliderViewContext参数上下文中,AttributeSet参数AttributeSet,int参数:
更改:
this.indeterminateSlider = ((ImageView) findViewById(R.id.indeterm_slider));
致:
在res/layout/中的slider.xml中:
更改:
<ImageView
android:id="@id/indeterminate_slider" [...] />
致:
主要的问题是让你的SliderView.java指向正确的id。因为没有这样做,你得到的是一个InflateException。一旦解决了这个问题,就会出现ClassCastException。这来自slider.xml,但没有+
indeterm_slider是SliderView,您将强制转换到ImageView。您获得InflateException是因为由于此ClassCastException更新而无法创建视图:
解决办法如下:
在SliderView.java构造函数公共SliderViewContext参数上下文中,AttributeSet参数AttributeSet,int参数:
更改:
this.indeterminateSlider = ((ImageView) findViewById(R.id.indeterm_slider));
致:
在res/layout/中的slider.xml中:
更改:
<ImageView
android:id="@id/indeterminate_slider" [...] />
致:
主要的问题是让你的SliderView.java指向正确的id。因为没有这样做,你得到的是一个InflateException。一旦解决了这个问题,就会出现ClassCastException。这来自slider.xml,但没有+
indeterm_slider是SliderView,您将强制转换到ImageView。您得到了InflateException,因为由于此ClassCastException无法创建视图请考虑使用XE22中发布的新API。由于它被视为一个全局UI组件,因此更易于使用,并且不需要修改布局。考虑使用XE22中发布的新API。它更易于使用,并且不需要您更改布局,因为它被视为一个全局UI组件。您建议我怎么做?为ImageView分配一个id并查找正确的id?如果使用它,我会让您知道它是否有效。我的意思是,android:id=@id/Undeterminate\u滑块,应该是android:id=@+id/indeterminate\u slider,您应该查找indeterminate\u slider而不是indeterm\u slideryeah抱歉。我的头模糊。我整天都在做这件事。好的,它似乎是不确定的,而不是不确定的。现在我只需要处理cast异常。你建议我怎么做?给ImageView分配一个id并查找正确的id?处理它,我会让你知道它是否有效。我的意思是,android:id=@id/Undeterminate\u slider,应该是android:id=@+id/Undeterminate\u slider,你应该寻找不确定的滑动条,而不是不确定的滑动条。我的头模糊。我整天都在做这件事。好的,它似乎是不确定的,而不是不确定的。现在我只需要处理强制转换异常。清除并重新生成以修复视图ID在R和二进制XML文件之间不同步的情况。使用自定义视图而不是XML文件的原因是什么?我试图发布我的glassware,但审查团队没有提到api。他们只是给了我一条消息和一个指向github的链接来创建progressbars。我不知道这是否回答了你的问题。最终,我们希望通过GDK更容易地构建进度条。在此之前,请从我们的一位探险家处查看此示例:。清理并重新生成以修复视图ID在R和二进制XML文件之间不同步的情况。使用自定义视图而不是XML文件的原因是什么?我试图发布我的glassware,但审查小组没有提到api。他们只是给了我一条消息和一个指向github的链接来创建progressbars。我不知道这是否回答了你的问题。最终,我们希望通过GDK更容易地构建进度条。在此之前,请从我们的一位探险家处查看此示例:。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="@dimen/slider_bar_height" >
<View
android:id="@id/slider_control"
android:layout_width="0.0px"
android:layout_height="@dimen/slider_bar_height"
android:background="@android:color/white" />
<ImageView
android:id="@id/indeterminate_slider"
android:layout_width="fill_parent"
android:layout_height="@dimen/slider_bar_height"
android:background="@drawable/slider_indeterminate" />
</FrameLayout>
this.indeterminateSlider = ((ImageView) findViewById(R.id.indeterm_slider));
this.indeterminateSlider = ((ImageView) findViewById(R.id.indeterminate_slider));
<ImageView
android:id="@id/indeterminate_slider" [...] />
<ImageView
android:id="@+id/indeterminate_slider" [...] />