Я хотел бы создать один класс, который содержит некоторые ключевые значения приложения, чтобы я мог делиться ими и получать к ним доступ во всех действиях. Вот как я это сделал до сих пор:
Я определяю класс следующим образом:
public class GlobalVars {
public static String str1;
public static String str2;
public static Integer int1;
public static Integer int2;
public static MyDBAdapter myDBAdapter;
public static Boolean isOK1() {
return str1.length() > 3;
}
}
Вот как я заполняю их в начале приложения:
private void getAllInfo() {
// first get the info
Cursor appCursor = cursor;
GlobalVars.str1 = appCursor.getString(appCursor
.getColumnIndexOrThrow(MyDBAdapter.KEY1));
if (GlobalVars.str1 != null) {
} else {
GlobalVars.str1 = "";
}
GlobalVars.int1 = appCursor.getInt(appCursor
.getColumnIndexOrThrow(MyDBAdapter.KEY_NUMBER1));
if (GlobalVars.int1 != null) {
} else {
GlobalVars.int1 = 1;
}
и я получаю доступ к этим значениям, просто написав
GlobalVars.int1 = ...
или
i = GlobalVars.int1;
везде, где мне нужно
В самом конце, когда приложение заканчивается, я помещаю все значения обратно в БД.
Это лучший способ обработки глобальных переменных таким образом?
Я получаю действительно странные ошибки NullPointerException при доступе к переменной GlobalVars.int1 с пользователями, которые получили приложение - хотя я на 100%, значение всегда назначается правильно и никогда с нулевым значением.
Нужно ли выделять объект GlobalVars перед его использованием?
Есть ли какое-либо возможное объяснение того, как эти значения могут стать нулевыми, если я нигде не назначу нулевое значение?
Спасибо