Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.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 1.5上运行应用程序时的NotFoundException和FileNotFoundException_Android - Fatal编程技术网

在Android 1.5上运行应用程序时的NotFoundException和FileNotFoundException

在Android 1.5上运行应用程序时的NotFoundException和FileNotFoundException,android,Android,我正在尝试将安卓1.6+应用程序向后移植到安卓1.5 以下是我的建议: 。。。我已经做了以下工作: 修改AndroidManifest.xml以将minSdkVersion设置为3 将以前位于drawable mdpi/中的所有文件移动到drawable/ 将drawable hdpi/重命名为drawable-hdpi-v4/ 在我看来,这应该确保1.5设备使用drawable/中的文件,而1.6及更高版本的设备则酌情使用drawable/和drawable-hdpi-v4/中的文

我正在尝试将安卓1.6+应用程序向后移植到安卓1.5

以下是我的建议:

。。。我已经做了以下工作:

  • 修改AndroidManifest.xml以将minSdkVersion设置为3
  • 将以前位于drawable mdpi/中的所有文件移动到drawable/
  • 将drawable hdpi/重命名为drawable-hdpi-v4/
  • 在我看来,这应该确保1.5设备使用drawable/中的文件,而1.6及更高版本的设备则酌情使用drawable/和drawable-hdpi-v4/中的文件。drawable/和drawable-hdpi-v4/目录是my res文件夹中唯一可绘制的目录

    但是,在1.5 emulator上编译、安装并运行生成的二进制文件后,出现以下错误:

    E/AndroidRuntime( 1096): Caused by: java.lang.reflect.InvocationTargetException
    E/AndroidRuntime( 1096):    at android.widget.ImageView.<init>(ImageView.java:103)
    E/AndroidRuntime( 1096):    at java.lang.reflect.Constructor.constructNative(Native Method)
    E/AndroidRuntime( 1096):    at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
    E/AndroidRuntime( 1096):    at android.view.LayoutInflater.createView(LayoutInflater.java:499)
    E/AndroidRuntime( 1096):    ... 26 more
    E/AndroidRuntime( 1096): Caused by: android.content.res.Resources$NotFoundException: File res/drawable/bg.png from drawable resource ID #0x7f02002e
    E/AndroidRuntime( 1096):    at android.content.res.Resources.loadDrawable(Resources.java:1641)
    E/AndroidRuntime( 1096):    at android.content.res.TypedArray.getDrawable(TypedArray.java:548)
    E/AndroidRuntime( 1096):    at android.widget.ImageView.<init>(ImageView.java:113)
    E/AndroidRuntime( 1096):    ... 30 more
    E/AndroidRuntime( 1096): Caused by: java.io.FileNotFoundException: res/drawable/bg.png
    E/AndroidRuntime( 1096):    at android.content.res.AssetManager.openNonAssetNative(Native Method)
    E/AndroidRuntime( 1096):    at android.content.res.AssetManager.openNonAsset(AssetManager.java:392)
    E/AndroidRuntime( 1096):    at android.content.res.Resources.loadDrawable(Resources.java:1634)
    E/AndroidRuntime( 1096):    ... 32 more
    
    E/AndroidRuntime(1096):由以下原因引起:java.lang.reflect.InvocationTargetException
    E/AndroidRuntime(1096):位于android.widget.ImageView。(ImageView.java:103)
    E/AndroidRuntime(1096):位于java.lang.reflect.Constructor.constructNative(本机方法)
    E/AndroidRuntime(1096):位于java.lang.reflect.Constructor.newInstance(Constructor.java:446)
    E/AndroidRuntime(1096):位于android.view.LayoutInflater.createView(LayoutInflater.java:499)
    E/AndroidRuntime(1096):。。。26多
    E/AndroidRuntime(1096):由以下原因引起:android.content.res.Resources$NotFoundException:文件res/drawable/bg.png来自可绘图资源ID#0x7f02002e
    E/AndroidRuntime(1096):位于android.content.res.Resources.loadDrawable(Resources.java:1641)
    E/AndroidRuntime(1096):位于android.content.res.TypedArray.getDrawable(TypedArray.java:548)
    E/AndroidRuntime(1096):位于android.widget.ImageView。(ImageView.java:113)
    E/AndroidRuntime(1096):。。。30多
    E/AndroidRuntime(1096):由以下原因引起:java.io.FileNotFoundException:res/drawable/bg.png
    E/AndroidRuntime(1096):位于android.content.res.AssetManager.OpenNoAssetNative(本机方法)
    E/AndroidRuntime(1096):位于android.content.res.AssetManager.OpenNoAsset(AssetManager.java:392)
    E/AndroidRuntime(1096):位于android.content.res.Resources.loadDrawable(Resources.java:1634)
    E/AndroidRuntime(1096):。。。32多
    
    出于我不理解的原因,1.5设备无法查看bg.png图像文件,该文件的一个版本位于drawable/和drawable-hdpi-v4/目录中

    运行相同的二进制文件在1.6上运行良好

    为什么1.5版设备无法通过此设置查看我的res/drawable/bg.png图像


    更新:如中所述,我正在使用Android SDK r6,并已将我的mdpi资源放在drawable/目录中。另外,我已经验证了这个问题不是孤立于bg.png的。如果我在xml中删除对损坏的绘图表的引用,则在setContentView()过程中,应用程序会在下一个图形和后续的每个图形上中断。

    几天前,我遇到了同样的问题。我找到的唯一解决方案是从头开始创建一个新项目,并向其中添加源文件和res文件。这肯定会解决问题。

    如果您使用Android 1.6构建项目,并且minSDKVesrion设置为3,则只能创建3个文件夹:可绘制hdpi、可绘制mdpi和可绘制ldpi。我在我的项目中重新创建了您的问题,当我更改Res文件夹结构时,它开始工作得很好。您当然可以尝试一下(Android 1.5有一个问题您应该注意。许多1.5 mdpi设备从drawable ldpi文件夹中获取资源。)

    成功

    问题是,我在drawable-hdpi-v4/中有一个foo.png资源,但它不在drawable/目录中。当我从布局文件中引用R.drawable.foo时,1.5 emulator因此无法为该id找到合适的资源。使跟踪变得如此困难的是,在引用foo.png时,错误并没有立即发生,而是在引用的下一个资源bg.png上抛出了错误。谷歌已经确认这是一个bug


    将一个mdpi版本的foo.png添加到drawable/目录中修复了这个问题。

    hm,我刚刚尝试过,但似乎没有任何区别。嗨,Amit,1.5 emulator根本无法识别drawable mdpi目录。如果我将我的drawable/资源移动到drawable mdpi/,它将找不到任何资源(包括应用程序图标)。如果我把它们放在drawable/中,它至少会找到应用程序图标(尽管出于某种原因不是bg.png)哇,5个月后这又咬了我一口。堆栈溢出ftw。