У меня есть 2 фрагмента (OCR.java и Manual.java).Оба фрагмента находятся под MainActivity.Во фрагменте Manual.java я инициализировал открытый статический массив 2d int public static int[][] board = new int[9][9]
.Затем я продолжил изменять значение board
из фрагмента в OCR.java.Я запустил Log.i
в OCR.java, чтобы проверить значение board
, и оно обновилось.
Однако, когда я продолжил извлекать значение board
во фрагменте в Manual.java,все элементы в массиве равны 0.
1) Почему это происходит?2) Разве общедоступные статические значения не должны сохранять свои значения даже между классами?3) Есть ли лучший способ сделать то, что я хочу достичь?Что на самом деле можно упростить, просто передав массив 2d int из одного фрагмента в класс в другой фрагмент в другом классе.
Любой ввод приветствуется.Спасибо!
MainActivity.class
открытый класс MainActivity расширяет AppCompatActivity {
public static int board[][] = new int[9][9];
....
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
}
OCR.java
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_ocr, container, false);
...
for (int row = 0; row < indiGrids.length; row ++) {
for (int col = 0; col < indiGrids[row].length; col ++) {
...
try {
board[row][col] = Integer.parseInt(getText(indiGrids[row][col]));
} catch (NumberFormatException e) {
board[row][col] = 0;
}
}
} else {
board[row][col] = 0;
}
}
}
Log.wtf("Board", "" + board[0][1]); //returns 4, because i just set it in the above nested for loop.
} ...
return rootView;
}
Manual.java
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_manual, container, false);
Log.wtf("TEST", "" + board[0][1]); // returns 0, instead of 4