所以,我在通过编码添加按钮方面遇到了问题。这是我从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>
答案 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个元素)。否则你会得到一个空指针异常。
检查日志的其余部分。它会告诉您哪个数组的大小不正确。