有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    首先,不要使用fill_parent使用match_parentfill_parent大约7年前更名为match_parent。它们做同样的事情,但不推荐使用填充父项

    在我看来,您之所以会出现此错误,是因为您将所有图像都放入了可绘制的文件夹中。这种行为会使你的设备重新缩放你的图像,这会在高分辨率的图像中产生OutOfMemory错误

    您需要根据屏幕DPI调整所有图像的大小,并将其放入如下可绘制文件夹:

    • 可拉伸xxxhdpi
    • 可拉伸xxhdpi
    • 可拉伸xhdpi
    • 可拉伸hdpi
    • 可拉伸mdpi

    查看thisthis以了解更多信息