Android 给出短值';s在if块中,并将它们交给不同活动中的另一个方法

Android 给出短值';s在if块中,并将它们交给不同活动中的另一个方法,android,Android,我有一段代码,在单击时为short gridSize提供一个值(我希望它能做到这一点,如果您看到任何错误,请纠正我)。但是现在它还没有做任何事情 给出短值的代码: public static short getGridSize(PuzzleActivity puzzleActivity, ImageButton view) { if ( mIbtn3x3 == view) { String puzzle3 = "3"; Short

我有一段代码,在单击时为short 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);
    } 
应接收值的代码(拼图活动):

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

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


显然我不是一个专业的编码员。请帮我修一下这个。提前感谢~olijf

这里有几件事要做。我要介绍的第一件事是编译器错误

听起来您的代码调用了
getGridSize
错误,它希望您在活动中传入
ImageButton

假设您的
ImageButton
被称为
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);
public static short getGridSize(...) {
     switch(view) {
          case mIbtn3x3:
               return 3;
          case mIbtn4x4:
               return 4;
          case mIbtn5x5:
               return 5;
     }
}
但实际上,您正在对
parseShort
执行许多不必要的调用。我会做更像这样的事情:

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);
public static short getGridSize(...) {
     switch(view) {
          case mIbtn3x3:
               return 3;
          case mIbtn4x4:
               return 4;
          case mIbtn5x5:
               return 5;
     }
}
第一,变量范围。 Java变量位于括号-{}之间 在这一行:

return Short.parseShort(PuzzleActivity.gridSize);
您只是没有在类中声明静态字段“gridSize”。 这样做:

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

Second error表示您使用错误的参数(类型)调用getGird(),并使用PuzzleActivity而不是ImageButton

mIbtn3x3、4x4、5x5是ImageButton。