Android用户界面编码错误

时间:2015-09-30 14:16:25

标签: java android user-interface

所以,我在通过编码添加按钮方面遇到了问题。这是我从logcat获得的错误消息,当我到达应该做的事情的活动时:

09-30 09:36:51.591: E/AndroidRuntime(14956): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gameproj/com.example.gameproj.MapMain}: java.lang.NullPointerException

以下是似乎相关的代码:

        map = new Button[loadedMap.getX()][loadedMap.getY()];
        LinearLayout layout = (LinearLayout) findViewById(R.id.mapything);
        LinearLayout.LayoutParams coord;
        for (int i = 0; i < map.length; i++){
            for (int j = 0; j < map[i].length; j++){
                map[i][j] = new Button(this);
                coord = new LayoutParams(16*i, 75+16*j);
                map[i][j].setLayoutParams(coord);
                map[i][j].setGravity(Gravity.CENTER_HORIZONTAL);
                layout.addView(map[i][j]);
            }
        }

从我可以调试的,错误是在layout.addView(map [i] [j])行周围,但我一直无法找到如何让它工作。

编辑:我不确定还有什么要放,但我会继续把xml文件放进去看看它是否能让它更清晰

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/mapything"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${relativePackage}.${activityClass}" >

    <Button
        android:id="@+id/button1"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:onClick="toCharacter"
        android:text="Back" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button1"
        android:layout_alignBottom="@+id/button1"
        android:layout_centerHorizontal="true"
        android:text="Map"
        android:textSize="18sp" />

</RelativeLayout>

2 个答案:

答案 0 :(得分:2)

我认为此行for (int j = 0; j < map[i].length; i++)中的问题会尝试将其替换为for (int j = 0; j < map[i].length; j++)

答案 1 :(得分:0)

我不知道你的变量在哪里宣布。但Java对数组的大小非常关键。因此,如果您将数组设置为[12](或某些内容),则索引不能高于11(12个元素)。否则你会得到一个空指针异常。

检查日志的其余部分。它会告诉您哪个数组的大小不正确。