Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.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
Java Android:尝试将另一种语言添加到我的应用程序后出现充气异常_Java_Android_Xml_Logcat_Inflate - Fatal编程技术网

Java Android:尝试将另一种语言添加到我的应用程序后出现充气异常

Java Android:尝试将另一种语言添加到我的应用程序后出现充气异常,java,android,xml,logcat,inflate,Java,Android,Xml,Logcat,Inflate,我的Android应用程序是用英语编写的,我还必须向用户提供阿拉伯语版本。我做了以下几件事 添加了一个布局ar文件夹并将我的布局文件放在那里 添加了一个可绘制的ar文件夹,并将我的图像放在那里 添加了一个values ar文件夹,并在strings.xml中翻译了我的字符串资源 将emulator中的语言设置更改为阿拉伯语进行测试 虽然我的应用程序的英文版运行良好,但我的阿拉伯语版本现在崩溃,出现以下日志跟踪 06-20 10:08:13.153: E/AndroidRuntime(623):

我的Android应用程序是用英语编写的,我还必须向用户提供阿拉伯语版本。我做了以下几件事

  • 添加了一个布局ar文件夹并将我的布局文件放在那里
  • 添加了一个可绘制的ar文件夹,并将我的图像放在那里
  • 添加了一个values ar文件夹,并在strings.xml中翻译了我的字符串资源
  • 将emulator中的语言设置更改为阿拉伯语进行测试
  • 虽然我的应用程序的英文版运行良好,但我的阿拉伯语版本现在崩溃,出现以下日志跟踪

    06-20 10:08:13.153: E/AndroidRuntime(623): FATAL EXCEPTION: main
    06-20 10:08:13.153: E/AndroidRuntime(623): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.digitalhealthagency.elaj.gui/org.digitalhealthagency.elaj.gui.SplashScreen}: android.view.InflateException: Binary XML file line #7: Error inflating class android.widget.ImageView
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.app.ActivityThread.access$600(ActivityThread.java:123)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.os.Handler.dispatchMessage(Handler.java:99)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.os.Looper.loop(Looper.java:137)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.app.ActivityThread.main(ActivityThread.java:4424)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at java.lang.reflect.Method.invokeNative(Native Method)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at java.lang.reflect.Method.invoke(Method.java:511)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at dalvik.system.NativeStart.main(Native Method)
    06-20 10:08:13.153: E/AndroidRuntime(623): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class android.widget.ImageView
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.view.LayoutInflater.createView(LayoutInflater.java:606)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:653)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.app.Activity.setContentView(Activity.java:1835)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at org.digitalhealthagency.elaj.gui.SplashScreen.onCreate(SplashScreen.java:16)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.app.Activity.performCreate(Activity.java:4465)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
    06-20 10:08:13.153: E/AndroidRuntime(623):  ... 11 more
    06-20 10:08:13.153: E/AndroidRuntime(623): Caused by: java.lang.reflect.InvocationTargetException
    06-20 10:08:13.153: E/AndroidRuntime(623):  at java.lang.reflect.Constructor.constructNative(Native Method)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.view.LayoutInflater.createView(LayoutInflater.java:586)
    06-20 10:08:13.153: E/AndroidRuntime(623):  ... 24 more
    06-20 10:08:13.153: E/AndroidRuntime(623): Caused by: java.lang.OutOfMemoryError
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.graphics.Bitmap.nativeCreate(Native Method)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.graphics.Bitmap.createBitmap(Bitmap.java:605)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.graphics.Bitmap.createBitmap(Bitmap.java:551)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:437)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:524)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:499)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:351)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:773)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.content.res.Resources.loadDrawable(Resources.java:1935)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.widget.ImageView.<init>(ImageView.java:119)
    06-20 10:08:13.153: E/AndroidRuntime(623):  at android.widget.ImageView.<init>(ImageView.java:109)
    06-20 10:08:13.153: E/AndroidRuntime(623):  ... 27 more
    
    这个问题与我的问题非常相似,但修复样式并不能解决问题

    提前谢谢你

    编辑

    在按照Aleks G的建议缩小图像大小后,图像加载正常,但现在我在另一个地方遇到了类似的错误

    06-20 14:27:22.157: E/AndroidRuntime(623): FATAL EXCEPTION: main
    06-20 14:27:22.157: E/AndroidRuntime(623): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.digitalhealthagency.elaj.gui/org.digitalhealthagency.elaj.gui.AppointmentReservationActivity}: android.view.InflateException: Binary XML file line #99: Error inflating class <unknown>
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.app.ActivityThread.access$600(ActivityThread.java:123)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.os.Handler.dispatchMessage(Handler.java:99)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.os.Looper.loop(Looper.java:137)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.app.ActivityThread.main(ActivityThread.java:4424)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at java.lang.reflect.Method.invokeNative(Native Method)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at java.lang.reflect.Method.invoke(Method.java:511)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at dalvik.system.NativeStart.main(Native Method)
    06-20 14:27:22.157: E/AndroidRuntime(623): Caused by: android.view.InflateException: Binary XML file line #99: Error inflating class <unknown>
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.view.LayoutInflater.createView(LayoutInflater.java:606)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:653)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.app.Activity.setContentView(Activity.java:1835)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at org.digitalhealthagency.elaj.gui.AppointmentReservationActivity.onCreate(AppointmentReservationActivity.java:88)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.app.Activity.performCreate(Activity.java:4465)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
    06-20 14:27:22.157: E/AndroidRuntime(623):  ... 11 more
    06-20 14:27:22.157: E/AndroidRuntime(623): Caused by: java.lang.reflect.InvocationTargetException
    06-20 14:27:22.157: E/AndroidRuntime(623):  at java.lang.reflect.Constructor.constructNative(Native Method)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.view.LayoutInflater.createView(LayoutInflater.java:586)
    06-20 14:27:22.157: E/AndroidRuntime(623):  ... 24 more
    06-20 14:27:22.157: E/AndroidRuntime(623): Caused by: java.lang.OutOfMemoryError
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.graphics.Bitmap.nativeCreate(Native Method)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.graphics.Bitmap.createBitmap(Bitmap.java:605)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.graphics.Bitmap.createBitmap(Bitmap.java:551)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:437)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:524)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:499)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:351)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:773)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.content.res.Resources.loadDrawable(Resources.java:1935)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.content.res.Resources.getDrawable(Resources.java:664)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:173)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:867)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.graphics.drawable.Drawable.createFromXml(Drawable.java:804)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.content.res.Resources.loadDrawable(Resources.java:1920)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.view.View.<init>(View.java:2785)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.widget.TextView.<init>(TextView.java:449)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.widget.Button.<init>(Button.java:108)
    06-20 14:27:22.157: E/AndroidRuntime(623):  at android.widget.Button.<init>(Button.java:104)
    06-20 14:27:22.157: E/AndroidRuntime(623):  ... 27 more
    
    appointment_reservation.xml中的第99行是

        <Button android:id="@+id/reserve_button"
            android:text="@string/reserve_button"
            android:layout_width="120dp"
            android:layout_height="40dp"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="20dp"
            android:paddingRight="15dp"
            android:layout_gravity="left"
            style="@style/buttonStyle"
            android:background="@drawable/button_selector" />
    
    
    
    我给按钮一个按钮选择器xml文件,该文件放在我的可绘制文件夹中。选择器在两个图像之间切换(总大小为6kb)


    提前谢谢你

    如果查看日志底部,您会发现问题的根本原因是:

    Caused by: java.lang.OutOfMemoryError
     at android.graphics.Bitmap.nativeCreate(Native Method)
     at android.graphics.Bitmap.createBitmap(Bitmap.java:605)
     at android.graphics.Bitmap.createBitmap(Bitmap.java:551)
     at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:437)
     at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:524)
     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:499)
     at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:351)
     at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:773)
     at android.content.res.Resources.loadDrawable(Resources.java:1935)
     at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
     at android.widget.ImageView.<init>(ImageView.java:119)
     at android.widget.ImageView.<init>(ImageView.java:109)
     ... 27 more
    
    如果你已经缩小了图像的大小,正如你所指出的,那么这意味着在某处还有另一个大图像


    请注意,重要的不是JPG或PNG文件的文件大小,而是在内部解码该图像文件需要多少内存。估计对图像文件进行内部解码大约需要多少内存的一种方法是在图像编辑器中打开该文件并将其另存为未压缩的TIFF文件。TIFF文件的大小大约是一个正在运行的Android应用程序中解码图像所占用的内存量。作为测试,我刚刚将一个750KB的JPG保存为TIFF格式,结果是5.8MB。

    谢谢您的回复。你能澄清一下你所说的图像太大是什么意思吗?我的原始图像是550 kb,当我将其缩小到175 kb时,图像最终出现在模拟器上。但是对于第二个应该出现的xml布局,我仍然得到了一个非常类似的错误日志跟踪。我的英文版和阿拉伯文版的图像大小完全相同。现在它给了我一个android.view.InflateException:二进制XML文件行#2:错误膨胀类,而不是像以前那样反对imageView。@NouranH“image size”不是图像文件的大小,而是解码位图的大小。您可以有一个175 KB的png文件,当解码为原始位图时,该文件将超过5 MB。@NouranH无法从一行注释中准确说出问题所在。请编辑您的帖子并添加错误的完整堆栈跟踪,就像第一篇一样。再次感谢您的回答。我编辑了上面的帖子。你能详细说明一下5MB解码成原始位图部分的情况吗?我如何跟踪解码以找出问题所在?
        <Button android:id="@+id/reserve_button"
            android:text="@string/reserve_button"
            android:layout_width="120dp"
            android:layout_height="40dp"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="20dp"
            android:paddingRight="15dp"
            android:layout_gravity="left"
            style="@style/buttonStyle"
            android:background="@drawable/button_selector" />
    
    Caused by: java.lang.OutOfMemoryError
     at android.graphics.Bitmap.nativeCreate(Native Method)
     at android.graphics.Bitmap.createBitmap(Bitmap.java:605)
     at android.graphics.Bitmap.createBitmap(Bitmap.java:551)
     at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:437)
     at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:524)
     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:499)
     at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:351)
     at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:773)
     at android.content.res.Resources.loadDrawable(Resources.java:1935)
     at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
     at android.widget.ImageView.<init>(ImageView.java:119)
     at android.widget.ImageView.<init>(ImageView.java:109)
     ... 27 more
    
    Caused by: java.lang.OutOfMemoryError
     at android.graphics.Bitmap.nativeCreate(Native Method)
     at android.graphics.Bitmap.createBitmap(Bitmap.java:605)
     at android.graphics.Bitmap.createBitmap(Bitmap.java:551)
     at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:437)
     at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:524)
     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:499)
     at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:351)
     at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:773)
     at android.content.res.Resources.loadDrawable(Resources.java:1935)
     at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
     at android.widget.ImageView.<init>(ImageView.java:119)
     at android.widget.ImageView.<init>(ImageView.java:109)
     ... 27 more