В моем приложении мне нужно объявить массив на основе значения, хранящегося пользователем в переменной SharedPreference. Проблема состоит в том, что массив должен быть объявлен в статическом блоке, так как размер массива должен быть объявлен до того, как onCreate() вызывается в моем классе.Android getSharedPreferences в статическом блоке класса
У меня есть ExpandableList в моей деятельности с родительским массивом в качестве дат следующих семи дней.
static int plannerSlotCount=7;
static public String[] parent = new String[plannerSlotCount];
static
{
Calendar cal = Calendar.getInstance();
String strdate = null;
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
int i;
for(i=0;i<plannerSlotCount;i++)
{
if (cal != null) {
strdate = sdf.format(cal.getTime());
}
parent[i] = strdate;
cal.add(Calendar.HOUR_OF_DAY,24);
}
}
Если я не объявите массив внутри статического блока, то я получаю сообщение об ошибке при
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
TextView textView = getGenericView();
textView.setText(getGroup(groupPosition).toString());
return textView;
}
Итак, я должен объявить содержание массива в самом I статического блока Угадай.
Дело в том, что я хочу изменить количество отображаемых дней (в настоящее время оно установлено в 7). Поэтому я решил сохранить номер в переменной SharedPreference и получить доступ к нему для инициализации массива.
Проблема я столкнулся, что
SharedPreferences preferences = getSharedPreferences(Settings.PREF_SETTINGS_FILE_NAME, MODE_PRIVATE);
final int slotCounter = preferences.getInt("slotCount", 7);
дает мне ошибку о том, что
Cannot make a static reference to the non-static method getSharedPreferences(String, int) from the type ContextWrapper
Есть ли возможный путь для достижения этой цели?
Я отредактировал мой вопрос. Пожалуйста, проверьте и предложите что угодно, если это возможно. – Swayam
где вы пытаетесь извлечь sharedPreference? – Blackbelt
Я хочу сделать это внутри статического блока. Но это дает ошибку. Код, заданный в моем вопросе, работает, но я хочу включить в него также SharedPreferences. – Swayam