0

我有一段代码可以在点击时为短 gridSize 提供一个值(这就是我希望它做的事情,如果您发现任何错误,请纠正我)。但现在它还没有做任何事情......

给出短值的代码:

public static short getGridSize(PuzzleActivity puzzleActivity, ImageButton view)  {
        if ( mIbtn3x3 == view) {
            String puzzle3 = "3";
            Short gridSize = Short.parseShort(puzzle3);
        } else if (mIbtn4x4 == view ) {
            String puzzle4 = "4";
            Short gridSize = Short.parseShort(puzzle4);
        } else if (mIbtn5x5 == view ) {
            String puzzle5 = "5";
            Short gridSize = Short.parseShort(puzzle5);
        }
        return Short.parseShort(PuzzleActivity.gridSize);
    } 

应该接收值的代码(拼图活动):

 createGameBoard(SizeSelection.getGridSize(this));
            break;

在 if 块代码中:gridSize 收到以下错误:“gridSize 无法解析或不是字段”。

在 PuzzleActivity 代码中:.getGridSize 收到以下错误:“SizeSelection 类型中的方法 getGridSize(PuzzleActivity, ImageButton) 不适用于参数 (PuzzleActivity)”。

显然我不是专业的编码员。请帮我解决这个问题。在此先感谢~olijf

4

2 回答 2

0

First - variable range. Java variable lives between brackets - {} At this line:

return Short.parseShort(PuzzleActivity.gridSize);

You just have not declared static field "gridSize" in your class. Do something like that:

static short getGridSize(){
private short gridSize;
if{...}
else if{...}
return gridSize;
}

Seccond error indicates that you call getGird() with wrong arguments (types) and use PuzzleActivity instead of ImageButton

于 2012-11-06T17:57:11.897 回答
0

这里发生了一些事情。我要介绍的第一件事是编译器错误。

听起来您getGridSize从代码中调用错误,它希望您ImageButton与活动一起传递。

假设您的ImageButton被调用imageButton,代码看起来像这样(将其绑定,view以便您可以打开它):

createGameBoard(SizeSelection.getGridSize(this, imageButton));

在内部getGridSize,您不会重置 gridSize 变量,而是在每个 if/then 块中创建一个新变量。你需要做这样的事情:

Short gridSize = -1;
if(mIbtn3x3 == view) {
    String puzzle3 = "3";
    gridSize = Short.parseShort(puzzle3);
}
else if(mIbtn4x4 == view) {
    String puzzle4 = "4";
    gridSize = Short.parseShort(puzzle4);
}
...
return Short.parseShort(gridSize);

但实际上,您正在对parseShort. 我会做更多这样的事情:

public static short getGridSize(...) {
     switch(view) {
          case mIbtn3x3:
               return 3;
          case mIbtn4x4:
               return 4;
          case mIbtn5x5:
               return 5;
     }
}
于 2012-11-06T16:50:47.060 回答