У меня была похожая проблема, и я решил ее, просто передав текущий контекст статической функции:
public static void LoadData(Context context)
{
SharedPreferences SaveData = context.getSharedPreferences(FILENAME, MODE_PRIVATE);
Variable = SaveData.getInt("Variable", 0);
Variable1 = SaveData.getInt("Variable1", 0);
Variable2 = SaveData.getInt("Variable2", 0);
}
Поскольку вы звоните извне действия, вам нужно сохранить контекст:
public static Context context;
А внутри OnCreate:
context = this;
Хранение контекста как статической переменной может вызвать проблемы, потому что когда класс уничтожается, статические переменные тоже. Это иногда случается, когда приложение прерывается и становится недостаточно памяти. Просто убедитесь, что контекст всегда установлен, прежде чем пытаться использовать его, даже если класс, устанавливающий контекст, случайно уничтожен.