在我的应用程序中,我需要根据用户在 SharedPreference 变量中存储的值声明一个数组。问题是数组需要在静态块中声明,因为需要在我的类中调用 onCreate() 之前声明数组的大小。
我的 Activity 中有一个 ExpandableList,其父数组是接下来 7 天的日期。
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;
}
所以,我猜我必须在静态块本身中声明数组的内容。
问题是我想更改要显示的天数(当前设置为 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
有没有可能的方法来实现这一点?