我正在制作一个简单的棋盘游戏,它使用桌面视图和按钮阵列作为棋盘方格。我的movePlayer获取目标行和列,在该行和列中放置一个标记,并用一个按钮替换其先前的位置。
我的movePlayer方法是:
private void movePlayer(int moveToRow, int moveToCol, Button buttons[][])
{
int oldRow = player.getPlayerRow();
int oldCol = player.getPlayerCol();
Button oldPosition = buttons[oldRow][oldCol];
int oldWidth = oldPosition.getWidth();
int oldHeight = oldPosition.getHeight();
Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(),
android.R.drawable.btn_default);
Bitmap scaledBitmap = Bitmap.createScaledBitmap(originalBitmap, oldWidth, oldHeight, true);
Resources resource = getResources();
oldPosition.setBackground(new BitmapDrawable(resource, scaledBitmap));
player.setPlayerRow(moveToRow);
player.setPlayerCol(moveToCol);
addPlayerToken(moveToRow, moveToCol, buttons);
}
我得到了error java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:596)
at foo.bar.minions.GameBoard.movePlayer(GameBoard.java:219)
。
如果我将android.R.drawable.btn_default
替换为R.drawable.foo
之类的可绘制内容,则此代码有效。
如果我使用int oldWidth
替换oldPosition.setBackgroundResource(android.R.drawable.btn_default);
下的所有内容,代码也会有效
但按钮没有正确缩放或看起来不像其他按钮。作为参考,我使用tableRow.addView(button);
来创建我的按钮。
如何让我的按钮看起来一样?
答案 0 :(得分:0)
修正了问题,因为使用tableRow.addView(button);
绘制的按钮与android.R.drawable.btn_default
的图像不同,因此修复只是在button.setBackgroundResource(android.R.drawable.btn_default);
之前添加了tableRow.addView(button);