Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在Eclipse 3.6.1中找不到ImageButton选择器XML文件?_Android_Eclipse - Fatal编程技术网

Android 在Eclipse 3.6.1中找不到ImageButton选择器XML文件?

Android 在Eclipse 3.6.1中找不到ImageButton选择器XML文件?,android,eclipse,Android,Eclipse,使用Selector.xml作为可绘制源的ImageButton时遇到一些问题,当我在Eclipse中切换到图形布局时,会出现以下错误: 无法解析属性src中的可绘制E:\Programming\Eclipse Workspace\com.commonware.android.Sandbox\res\drawable hdpi\keycselector.xml 异常详细信息记录在窗口>显示视图>错误日志中 这是显示设置为keycselector.xml文件的src的ImageButton: &l

使用Selector.xml作为可绘制源的ImageButton时遇到一些问题,当我在Eclipse中切换到图形布局时,会出现以下错误:

无法解析属性src中的可绘制E:\Programming\Eclipse Workspace\com.commonware.android.Sandbox\res\drawable hdpi\keycselector.xml 异常详细信息记录在窗口>显示视图>错误日志中

这是显示设置为keycselector.xml文件的src的ImageButton:

<ImageButton 
  android:layout_width="127px"
  android:layout_height="match_parent" 
  android:id="@+id/BtnC"  
  android:padding="0px" 
  android:src="@drawable/keycselector">
</ImageButton>  
这是keycselector.xml文件,它位于\res\drawable hdpi中\

<?xml version="1.0" encoding="utf-8"?>
<Selector xmlns:android="http://schemas.android.com/apk/res/android" android:constantSize="true">
    <item android:state_pressed="true" android:drawable="@drawable/keycimagepressed" />
    <item android:state_focused="true" android:drawable="@drawable/keycimagepressed" />
    <item android:drawable="@drawable/keycimage" />
</Selector>
这里是跟踪,不知道这是什么意思,PI不能以xml位置开始:unknownï»»java.io中的@1:7。FileReader@172b8dd:

org.xmlpull.v1.XmlPullParserException:PI在java.io中不能以xml位置:unknownï»1:7开头。FileReader@172b8dd 位于org.kxml2.io.KXmlParser.exceptionUnknown Source 位于org.kxml2.io.KXmlParser.error未知源 位于org.kxml2.io.KXmlParser.parseLegacyUnknown Source 位于org.kxml2.io.KXmlParser.nextim的已知源 位于org.kxml2.io.KXmlParser.nextUnknown Source 在com.android.layoutlib.bridge.BridgeXmlBlockParser.nextBridgeXmlBlockParser.java:238 位于android.graphics.drawable.drawable.createFromXmlDrawable.java:721 位于com.android.layoutlib.bridge.ResourceHelper.getDrawableResourceHelper.java:150 在com.android.layoutlib.bridge.BridgeTypedArray.getDrawableBridgeTypedArray.java:670 在android.widget.ImageView.ImageView.java:118 在android.widget.ImageButton.ImageButton.java:82 在android.widget.ImageButton.ImageButton.java:78 位于sun.reflect.generatedconstructor或accessor19.newInstanceUnknown Source 位于sun.reflect.delegatingConstructor或AccessorImpl.newInstanceUnknown Source 位于java.lang.reflect.Constructor.newInstanceUnknown Source 在android.view.LayoutInflater.createViewLayoutInflater.java:500 在android.view.BridgeInflater.onCreateViewBridgeInflater.java:77 在android.view.LayoutInflater.createViewFromTagLayoutInflater.java:563 在android.view.BridgeInflater.createViewFromTagBridgeInflater.java:122 在android.view.LayoutInflater.rInflateLayoutInflater.java:618 在android.view.LayoutInflater.rInflateLayoutInflater.java:621 在android.view.LayoutInflater.rInflateLayoutInflater.java:621 在android.view.LayoutInflater.inflateLayoutInflater.java:407 在android.view.LayoutInflater.inflateLayoutInflater.java:296 位于com.android.layoutlib.bridge.bridge.computeLayoutBridge.java:397 位于com.android.ide.common.rendering.layoutbrary.createLegacySessionLayoutLibrary.java:382 位于com.android.ide.common.rendering.layoutbrary.createSessionLayoutLibrary.java:276 位于com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderwithbridge未知源 位于com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderwithbridge未知源 在com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputelayou未知源 位于com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart$ReloadListener.reloadLayoutSwtun已知源 在com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart$ReloadListener.access$0未知源 位于com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart$ReloadListener$1.run未知源代码 位于org.eclipse.swt.widgets.RunnableLock.RunnableLock.java:35 位于org.eclipse.swt.widgets.Synchronizer.runasynchMessagesSynchronizer.java:134 在org.eclipse.swt.widgets.Display.runAsyncMessagesDisplay.java:4041 位于org.eclipse.swt.widgets.Display.readAndDispatchDisplay.java:3660 位于org.eclipse.ui.internal.Workbench.runEventLoopWorkbench.java:2640 位于org.eclipse.ui.internal.Workbench.runUIWorkbench.java:2604 在org.eclipse.ui.internal.Workbench.access$4Workbench.java:2438 位于org.eclipse.ui.internal.Workbench$7.runWorkbench.java:671 位于org.eclipse.core.databinding.observable.Realm.runWithDefaultRealm.java:332 位于org.eclipse.ui.internal.Workbench.createAndRunWorkbenchWorkbench.java:664 位于org.eclipse.ui.PlatformUI.createAndRunWorkbenchPlatformUI.java:149 位于org.eclipse.ui.internal.ide.application.IDEApplication.startIDEApplication.java:115 在org.eclipse.equinox.internal.app.eclipseeapphandle.runEclipseAppHandle.java:196 位于org.eclipse.core.runtime.internal.adapter.eclipseeappluncher.runapplicationclipseappluncher.java:110 位于org.eclipse.core.runtime.internal.adapter.eclipseeappluncher.starteclipseappluncher.java:79 位于org.eclipse.core.runtime.adapter.EclipseStarter.runEclipseStarter.java:369 位于org.eclipse.core.runtime.adapter.EclipseStarter.runEclipseStarter.java:179 在sun.reflect.NativeMethodAccessorImpl.invoke0Native方法中 位于sun.reflect.NativeMethodAccessorImpl.invokeUnknown源 在sun.reflect.DelegatingMethodAccessorImpl.invokeUnknown源 位于java.lang.reflect.Method.invokeUnknown源 位于org.eclipse.equinox.launcher.Main.invokeFrameworkMain.java:619 位于org.eclipse.equinox.launcher.Main.basicRunMain.java:574 在org.eclipse.equinox.launch java:1407

在选择器中尝试使用小写的s。如果这没有帮助,请去掉PI线,它看起来像:

<?xml version="1.0" encoding="utf-8"?>

它在抱怨这句台词,尽管我不太清楚为什么。

我已经用头撞了几次这堵墙,现在我有了答案,我讨厌神秘的行为,尤其是当它看起来是随机的时候

我刚刚在Unix和DOS上运行了一个4路测试,有无二进制EF BB BF BOM头/签名。我发现Eclipse并没有将二进制BOM头放入它创建的XML文件中。如果您添加了一个具有声明头的文件,则只有在没有该二进制签名的情况下,该文件才能正常工作。EOL是Unix还是DOS并不重要。如果两种形式的标题都有,则会出现此问题。你可以有一个,另一个,或者两者都没有,但决不能两者都有

因此,如果您在Eclipse中创建一个新的XML文件,您可以在3.6-3.7.1中预期它没有二进制BOM头,您应该在其中正确地放置一个声明头,以将其标识为Unicode。如果您导入的项目包含具有二进制BOM表头签名的文件,或者使用喜欢添加这些文件的外部编辑器,那么所有这些乐趣就从这里开始

理想情况下,在导入带有声明的XML文件之前,请确保它们没有二进制BOM头。。。否则,在Eclipse抱怨时删除该声明头。。。除了删除二进制头之外,这就是您可以轻松完成的所有操作。如果Eclipse能够更一致地处理这个问题,那就太好了。。。或者至少为您提供了一种方法,通过删除二进制BOM头来识别和修复问题

如果有疑问,请使用外部十六进制编辑器检查该文件,最好是一个不支持Unicode的WinHex编辑器,YMMV。一些文本/十六进制编辑器将自动检测Unicode,并可能在文件实际上没有头时自动添加头。
你有没有按下keycimage,keycimage图像文件也在drawable文件夹中?嗨,Tim,谢谢你的评论,是的,文件在drawable文件夹中,我只是再次检查了一下以防万一。干杯嗨,公共软件,很好的发现!我正在按照《忙碌的程序员指南》进行操作,当我发现ImageButton&selector时,我被跟踪了。移除两条PI线并没有,这就是那条线,如果它被称为新的东西,并将选择器更改为选择器修复了问题,感谢您的帮助,非常感谢!!请参阅下面我的答案,了解XML行到底出了什么问题的详细信息。