java应用程序在打开活动时崩溃
大家好! 一开始,我必须说,我正在学习安卓3天,所以这可能是一些愚蠢的问题,但我指望你的理解。 我正在尝试做一个简单的活动,这将是一种掷骰子。它工作了一段时间,但当我甚至进入活动时,它突然开始崩溃。我不能理解这个错误,这就是为什么我要打扰你
我的XML代码: http://www.wklej.org/id/3118631/
Java代码: http://www.wklej.org/id/3118642/
由于字符限制,我不得不从我的帖子中删除代码
错误日志:
FATAL EXCEPTION: main
Process: com.example.daniel.scrolltest3, PID: 24821
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.daniel.scrolltest3/com.example.daniel.scrolltest3.Dices}: 安卓.view.InflateException: Binary XML file line #128: Binary XML file line #128: Error inflating class <unknown>
at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2434)
at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
at 安卓.app.ActivityThread.access$900(ActivityThread.java:157)
at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1356)
at 安卓.os.Handler.dispatchMessage(Handler.java:102)
at 安卓.os.Looper.loop(Looper.java:148)
at 安卓.app.ActivityThread.main(ActivityThread.java:5551)
at java.lang.reflect.Method.invoke(Native Method)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:620)
Caused by: 安卓.view.InflateException: Binary XML file line #128: Binary XML file line #128: Error inflating class <unknown>
at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:539)
at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:423)
at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:374)
at com.安卓.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:401)
at 安卓.app.Activity.setContentView(Activity.java:2171)
at com.example.daniel.scrolltest3.Dices.onCreate(Dices.java:76)
at 安卓.app.Activity.performCreate(Activity.java:6272)
at 安卓.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387)
at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
at 安卓.app.ActivityThread.access$900(ActivityThread.java:157)
at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1356)
at 安卓.os.Handler.dispatchMessage(Handler.java:102)
at 安卓.os.Looper.loop(Looper.java:148)
at 安卓.app.ActivityThread.main(ActivityThread.java:5551)
at java.lang.reflect.Method.invoke(Native Method)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:620)
Caused by: 安卓.view.InflateException: Binary XML file line #128: Error inflating class <unknown>
at 安卓.view.LayoutInflater.createView(LayoutInflater.java:645)
at com.安卓.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
at 安卓.view.LayoutInflater.onCreateView(LayoutInflater.java:694)
at 安卓.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762)
at 安卓.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
at 安卓.view.LayoutInflater.rInflate(LayoutInflater.java:835)
at 安卓.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at 安卓.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at 安卓.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at 安卓.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at 安卓.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:515)
at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:423)
at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:374)
at com.安卓.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:401)
at 安卓.app.Activity.setContentView(Activity.java:2171)
at com.example.daniel.scrolltest3.Dices.onCreate(Dices.java:76)
at 安卓.app.Activity.performCreate(Activity.java:6272)
at 安卓.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387)
at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
at 安卓.app.ActivityThread.access$900(ActivityThread.java:157)
at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1356)
at 安卓.os.Handler.dispatchMessage(Handler.java:102)
at 安卓.os.Looper.loop(Looper.java:148)
at 安卓.app.ActivityThread.main(ActivityThread.java:5551)
at java.lang.reflect.Method.invoke(Native Method)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:620)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance(Native Method)
at 安卓.view.LayoutInflater.createView(LayoutInflater.java:619)
at com.安卓.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
at 安卓.view.LayoutInflater.onCreateView(LayoutInflater.java:694)
at 安卓.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762)
at 安卓.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
at 安卓.view.LayoutInflater.rInflate(LayoutInflater.java:835)
at 安卓.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at 安卓.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at 安卓.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at 安卓.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at 安卓.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:515)
at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:423)
at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:374)
at com.安卓.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:401)
at 安卓.app.Activity.setContentView(Activity.java:2171)
at com.example.daniel.scrolltest3.Dices.onCreate(Dices.java:76)
at 安卓.app.Activity.performCreate(Activity.java:6272)
at 安卓.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387)
at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
at 安卓.app.ActivityThread.access$900(ActivityThread.java:157)
at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1356)
at 安卓.os.Handler.dispatchMessage(Handler.java:102)
at 安卓.os.Looper.loop(Looper.java:148)
at 安卓.app.ActivityThread.main(ActivityThread.java:5551)
at java.lang.reflect.Method.invoke(Native Method)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:620)
Caused by: java.lang.OutOfMemoryError: Failed to allocate a 11520012 byte allocation with 7105080 free bytes and 6MB until OOM
at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
at 安卓.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at 安卓.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609)
at 安卓.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
at 安卓.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1080)
at 安卓.content.res.Resources.loadDrawableForCookie(Resources.java:2738)
at 安卓.content.res.Resources.loadDrawable(Resources.java:2643)
at 安卓.content.res.TypedArray.getDrawable(TypedArray.java:870)
at 安卓.widget.ImageView.<init>(ImageView.java:152)
at 安卓.widget.ImageView.<init>(ImageView.java:140)
at 安卓.widget.ImageView.<init>(ImageView.java:136)
at java.lang.reflect.Constructor.newInstance(Native Method)
at 安卓.view.LayoutInflater.createView(LayoutInflater.java:619)
at com.安卓.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
at 安卓.view.LayoutInflater.onCreateView(LayoutInflater.java:694)
at 安卓.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762)
at 安卓.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
at 安卓.view.LayoutInflater.rInflate(LayoutInflater.java:835)
at 安卓.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at 安卓.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at 安卓.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at 安卓.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at 安卓.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:515)
at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:423)
at 安卓.view.LayoutInflater.inflate(LayoutInflater.java:374)
at com.安卓.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:401)
at 安卓.app.Activity.setContentView(Activity.java:2171)
at com.example.daniel.scrolltest3.Dices.onCreate(Dices.java:76)
at 安卓.app.Activity.performCreate(Activity.java:6272)
at 安卓.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387)
at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
at 安卓.app.ActivityThread.access$900(ActivityThread.java:157)
at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1356)
at 安卓.os.Handler.dispatchMessage(Handler.java:102)
at 安卓.os.Looper.loop(Looper.java:148)
at 安卓.app.ActivityThread.main(ActivityThread.java:5551)
at java.lang.reflect.Method.invoke(Native Method)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:620)
当我在下面的评论中学习farhan patel的建议时,我发现了一个现在有效的解决方案
安卓:largeHeap=“true”
进入我的清单文件。现在看起来是这样的:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
package="com.example.daniel.scrolltest3">
<uses-permission 安卓:name="安卓.permission.INTERNET" />
<application
安卓:allowBackup="true"
安卓:icon="@drawable/logo"
安卓:label="@string/app_name"
安卓:roundIcon="@mipmap/ic_launcher_round"
安卓:largeHeap="true"
安卓:supportsRtl="true"
安卓:theme="@style/AppTheme">
<activity
安卓:name=".StartupMenu"
安卓:screenOrientation="portrait">
<intent-filter>
<action 安卓:name="安卓.intent.action.MAIN" />
<category 安卓:name="安卓.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity 安卓:name=".Karta1"/>
<activity 安卓:name=".MainMenu"
安卓:screenOrientation="portrait"/>
<activity 安卓:name=".Dices"
安卓:screenOrientation="portrait"/>
<activity 安卓:name=".ListaKart"
安卓:screenOrientation="portrait"/>
<activity 安卓:name=".Karta1_2" />
<activity 安卓:name=".WebPage"
安卓:screenOrientation="portrait"></activity>
</application>
</manifest>
# 1 楼答案
首先,不要使用
fill_parent
使用match_parent
fill_parent大约7年前更名为match_parent。它们做同样的事情,但不推荐使用填充父项在我看来,您之所以会出现此错误,是因为您将所有图像都放入了可绘制的文件夹中。这种行为会使你的设备重新缩放你的图像,这会在高分辨率的图像中产生
OutOfMemory
错误您需要根据屏幕
DPI
调整所有图像的大小,并将其放入如下可绘制文件夹:查看this和this以了解更多信息