Java 游戏网格没有在Android工作室输出?

Java 游戏网格没有在Android工作室输出?,java,android,android-studio,mobile,Java,Android,Android Studio,Mobile,我目前正在制作一款android应用程序,它可以玩拼图游戏hashi。我目前正在努力输出游戏网格。我想输出一个像bellow这样的2d数组- 1 0 0 0 1 0 2 0 0 2 2 0 3 0 1 0 0 0 0 0 0 0 2 0 2 但是,当我在模拟器中运行应用程序时,它只输出一个空白的白色屏幕 主要活动- @Override protected void onCreate(Bundle savedInstanceState) { sup

我目前正在制作一款android应用程序,它可以玩拼图游戏hashi。我目前正在努力输出游戏网格。我想输出一个像bellow这样的2d数组-

1  0  0  0  1
0  2  0  0  2
2  0  3  0  1
0  0  0  0  0
0  0  2  0  2
但是,当我在模拟器中运行应用程序时,它只输出一个空白的白色屏幕

主要活动-

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(new boardView(this));
    //sets the view to the board view to show the puzzle on open.
    client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
}
棋盘类-

public class boardView extends View {

    public float IslandX;
    public float IslandY;
    public int islandDiameter;

    private Canvas canvas;

    public boardView(Context context) {
        super(context);
    }
    int gameBoard[][] = {{0, 1, 0, 0, 1}, {0, 2, 0, 0, 2}, {2, 0, 3, 0, 1}, {0, 0, 0, 0, 0}, {0, 0, 2, 0, 2}};
    @TargetApi(Build.VERSION_CODES.LOLLIPOP)

    public void DrawBoard(Canvas canvas){
        Paint Island = new Paint();
        Island.setStyle(Paint.Style.FILL);

        Island.setStyle(Paint.Style.FILL);

        float stepX = canvas.getWidth() / 5.f;
        float stepY = canvas.getHeight() / 5.f;

        for (int i = 0; i < 5; i++) {
            for (int R = 0; R < 5; R++) {
                IslandX = i * stepX;
                IslandY = R * stepY;
                if (gameBoard[i][R] == 0) {
                    Island.setColor(Color.BLUE);
                    canvas.drawOval(IslandX, IslandY, 50, 50, Island);

                } else if (gameBoard[i][R] == 1) {
                    Island.setColor(Color.BLACK);
                    canvas.drawOval(IslandX, IslandY, 50, 50, Island);

                } else if (gameBoard[i][R] == 2) {
                    Island.setColor(Color.BLUE);
                    canvas.drawOval(IslandX, IslandY, 50, 50, Island);

                }


            }
        }

        }

}
公共类boardView扩展视图{
公共浮标岛;
公共交通系统;
公共岛屿直径;
私人帆布;
公共boardView(上下文){
超级(上下文);
}
int gameBoard[][]={{0,1,0,0,1},{0,2,0,0,0,2},{2,0,3,0,1},{0,0,0,0,0,0},{0,0,2,0,2};
@TargetApi(Build.VERSION\u code.LOLLIPOP)
公共真空抽油板(帆布){
油漆岛=新油漆();
岛。设置样式(油漆。样式。填充);
岛。设置样式(油漆。样式。填充);
float-stepX=canvas.getWidth()/5.f;
float stepY=canvas.getHeight()/5.f;
对于(int i=0;i<5;i++){
对于(int R=0;R<5;R++){
IslandX=i*stepX;
IslandY=R*stepY;
如果(游戏板[i][R]==0){
岛屿。设置颜色(颜色。蓝色);
画布。drawOval(IslandX,IslandY,50,50,IslandY);
}else if(游戏板[i][R]==1){
Island.setColor(颜色:黑色);
画布。drawOval(IslandX,IslandY,50,50,IslandY);
}else if(游戏板[i][R]==2){
岛屿。设置颜色(颜色。蓝色);
画布。drawOval(IslandX,IslandY,50,50,IslandY);
}
}
}
}
}

要使黑板可见,必须将代码从Drawboard移动到覆盖方法onDraw,在onCreate方法中,必须对类boardView的实例调用invalidate(),该实例调用onDraw方法来更新屏幕,如果可见。

您没有在任何地方调用DrawBoard方法,我将如何调用它?在boardView视图中覆盖
void onDraw(Canvas Canvas)
,并将代码移到其中,这样做,但是,它仍然只输出左上角的第一个椭圆,而不输出其他椭圆?请停止重复相同的问题。只需使用您尝试过的任何新信息或代码编辑您的原始帖子,或者解释提供的答案不起作用的原因,它就会被推到活动队列的顶部。没有必要对同一个问题进行多次提问。我已经关闭了与这个方法相同的其他方法,因为这里有一个答案和一个向上投票。我应该在oncreate方法中编写什么代码?我是否复制了on create方法中的代码?类似于:
boardView bv==(boardView)findViewById(R.id.“在XML布局中插入boardView项的id”);bv.invalidate()
“我是否在创建方法中复制代码”,您的意思是从
公共void DrawBoard(Canvas Canvas)
编码,不,您将此代码复制到
@Override protected void onDraw(Canvas Canvas)
中,它仍然只输出左上角数组中的第一个整数,但不是数组的其余部分?视图在XML布局文件中是否定义为水平和垂直匹配父视图/填充父视图?