Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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 带40+的嵌套线性布局;安卓测试设备的按钮崩溃_Android - Fatal编程技术网

Android 带40+的嵌套线性布局;安卓测试设备的按钮崩溃

Android 带40+的嵌套线性布局;安卓测试设备的按钮崩溃,android,Android,使用Android Studio,我为游戏创建了一个10x10的网格,每行使用嵌套的线性布局和图像按钮。我正在模拟器和安卓设备上进行测试。网格在模拟器中显示良好,但在设备上崩溃 作为故障排除的一部分,我决定一次实现一行以查看崩溃点。在5行时,设备将安装但不显示网格(屏幕变黑,然后返回到桌面),LogCat变得疯狂。然而,我在日志中没有看到任何指示原因的东西。我在网上找不到任何可以解释这一点的东西。我知道嵌套权重可能会引起问题,但我不知道有什么其他方法可以得到我想要的布局——我在这里找到了解决方案

使用Android Studio,我为游戏创建了一个10x10的网格,每行使用嵌套的线性布局和图像按钮。我正在模拟器和安卓设备上进行测试。网格在模拟器中显示良好,但在设备上崩溃

作为故障排除的一部分,我决定一次实现一行以查看崩溃点。在5行时,设备将安装但不显示网格(屏幕变黑,然后返回到桌面),LogCat变得疯狂。然而,我在日志中没有看到任何指示原因的东西。我在网上找不到任何可以解释这一点的东西。我知道嵌套权重可能会引起问题,但我不知道有什么其他方法可以得到我想要的布局——我在这里找到了解决方案

下面是我的XML文件。目前,我还没有对自动生成的MainActivity.java文件执行任何操作。我只是在做布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical"
              tools:context=".MainActivity"
    >
    <!-- App Name -->
    <ImageView
        android:id="@+id/logoImageView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:scaleType="fitXY"
        android:src="@drawable/logo"/>
    <!-- End App Name -->

    <!-- Grid -->
    <LinearLayout
        android:id="@+id/grid"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#06d7ff"
        android:orientation="vertical"
        android:weightSum="10">

        <!-- Row 0 -->
        <LinearLayout
            android:id="@+id/row0"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="horizontal">

            <ImageButton
                android:id="@+id/r0c0"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r0c1"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r0c2"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r0c3"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r0c4"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r0c5"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r0c6"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r0c7"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r0c8"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r0c9"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>
        </LinearLayout>
        <!-- End Row 0 -->

        <!-- Row 1 -->
        <LinearLayout
            android:id="@+id/row1"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="horizontal"
            >

            <ImageButton
                android:id="@+id/r1c0"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r1c1"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r1c2"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r1c3"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r1c4"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r1c5"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r1c6"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r1c7"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r1c8"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r1c9"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>
        </LinearLayout>
        <!-- End Row 1 -->

        <!-- Row 2 -->
        <LinearLayout
            android:id="@+id/row2"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="horizontal"
            >

            <ImageButton
                android:id="@+id/r2c0"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r2c1"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r2c2"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r2c3"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r2c4"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r2c5"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r2c6"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r2c7"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r2c8"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>

            <ImageButton
                android:id="@+id/r2c9"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="0.5dp"
                android:layout_weight="1"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>
        </LinearLayout>
        <!-- End Row 2 -->

        <!-- Row 3 -->
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:id="@+id/row3">

            <ImageButton
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/r3c0"
                android:background="@drawable/ocean"
                android:layout_weight="1"
                android:scaleType="fitXY"
                android:layout_margin="0.5dp"/>
            <ImageButton
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/r3c1"
                android:background="@drawable/ocean"
                android:layout_weight="1"
                android:scaleType="fitXY"
                android:layout_margin="0.5dp"/>
            <ImageButton
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/r3c2"
                android:background="@drawable/ocean"
                android:layout_weight="1"
                android:scaleType="fitXY"
                android:layout_margin="0.5dp"/>
            <ImageButton
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/r3c3"
                android:background="@drawable/ocean"
                android:layout_weight="1"
                android:scaleType="fitXY"
                android:layout_margin="0.5dp"/>
            <ImageButton
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/r3c4"
                android:background="@drawable/ocean"
                android:layout_weight="1"
                android:scaleType="fitXY"
                android:layout_margin="0.5dp"/>
            <ImageButton
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/r3c5"
                android:background="@drawable/ocean"
                android:layout_weight="1"
                android:scaleType="fitXY"
                android:layout_margin="0.5dp"/>
            <ImageButton
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/r3c6"
                android:background="@drawable/ocean"
                android:layout_weight="1"
                android:scaleType="fitXY"
                android:layout_margin="0.5dp"/>
            <ImageButton
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/r3c7"
                android:background="@drawable/ocean"
                android:layout_weight="1"
                android:scaleType="fitXY"
                android:layout_margin="0.5dp"/>
            <ImageButton
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/r3c8"
                android:background="@drawable/ocean"
                android:layout_weight="1"
                android:scaleType="fitXY"
                android:layout_margin="0.5dp"/>
            <ImageButton
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/r3c9"
                android:background="@drawable/ocean"
                android:layout_weight="1"
                android:scaleType="fitXY"
                android:layout_margin="0.5dp"/>
        </LinearLayout>
        <!-- End Row 3 -->

        <!-- THIS IS WHERE THE CRASH OCCURS -->
        <!-- Row 4 -->
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:id="@+id/row4">

            <ImageButton
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/r4c0"
                android:layout_weight="1"
                android:layout_margin="0.5dp"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>
            <ImageButton
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/r4c1"
                android:layout_weight="1"
                android:layout_margin="0.5dp"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>
            <ImageButton
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/r4c2"
                android:layout_weight="1"
                android:layout_margin="0.5dp"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>
            <ImageButton
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/r4c3"
                android:layout_weight="1"
                android:layout_margin="0.5dp"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>
            <ImageButton
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/r4c4"
                android:layout_weight="1"
                android:layout_margin="0.5dp"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>
            <ImageButton
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/r4c5"
                android:layout_weight="1"
                android:layout_margin="0.5dp"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>
            <ImageButton
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/r4c6"
                android:layout_weight="1"
                android:layout_margin="0.5dp"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>
            <ImageButton
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/r4c7"
                android:layout_weight="1"
                android:layout_margin="0.5dp"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>
            <ImageButton
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/r4c8"
                android:layout_weight="1"
                android:layout_margin="0.5dp"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>
            <ImageButton
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/r4c9"
                android:layout_weight="1"
                android:layout_margin="0.5dp"
                android:background="@drawable/ocean"
                android:scaleType="fitXY"/>
        </LinearLayout>
        <!-- End Row 4 -->

    </LinearLayout>
    <!-- End Grid -->

    <!-- Footer -->
    <TextView
        android:id="@+id/footerTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#000000"
        android:gravity="center"
        android:text="@string/score"
        android:textColor="#ffffff"
        android:textSize="48sp"/>
    <!-- End Footer -->

</LinearLayout>

我解决了我的问题!我在正确的轨道上,图形导致了内存不足错误。文件太大,尤其是PNG。我调整了所有内容的大小并转换为JPG。还为背景创建了多个分辨率。每样东西都装得很快。现在我需要以编程方式创建按钮。

您需要发布来自crashI的stacktrace,建议您使用代码创建此布局,而不是使用一个巨大的布局文件。如果您使用的是“网格”,则使用
GridLayout
。更易于管理,且无嵌套。尝试改用TableLayout。我对我的应用程序进行了一些更改,并在上面发布了新的详细信息@codeMagic,我包括了stacktrace的一部分。
***
07-10 15:19:52.103  18524-18524/com.android.battleships I/dalvikvm﹕ [ 07-10 15:19:52.103 18524:18524 D/skia     ]
    --- allocation failed for scaled bitmap
07-10 15:19:52.103  18524-18524/com.android.battleships D/AndroidRuntime﹕ Shutting down VM
07-10 15:19:52.103  18524-18524/com.android.battleships W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xb2d13b20)
07-10 15:19:52.103  18524-18524/com.android.battleships E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.android.battleships, PID: 18524
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.battleships/com.android.battleships.Game}: android.view.InflateException: Binary XML file line #35: Error inflating class android.widget.ImageButton
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: android.view.InflateException: Binary XML file line #35: Error inflating class android.widget.ImageButton
            ***
            at com.android.battleships.Game.onCreate(Game.java:13)
            ***
     Caused by: java.lang.reflect.InvocationTargetException
            ***
            at com.android.battleships.Game.onCreate(Game.java:13)
            ***
     Caused by: java.lang.OutOfMemoryError
            ***
            at com.android.battleships.Game.onCreate(Game.java:13)
            ***