). Приложение, как объяснил Сунил (в Как объявить глобальные переменные в Android?)
Подход выглядит следующим образом:
class MyApp extends Application {
private String myState;
public String getState(){
return myState;
}
public void setState(String s){
myState = s;
}
}
class Blah extends Activity {
@Override
public void onCreate(Bundle b){
...
MyApp appState = ((MyApp)getApplicationContext());
String state = appState.getState();
...
}
}
До этого момента этот подход отлично работал для доступа к глобальной переменной. из любого из моих действий.Но сегодня, используя тот же подход, я получил следующую ошибку:
Cannot make a static reference to the non-static method getApplicationContext()
from the type ContextWrapper
Ключевое отличие от предыдущего заключается в том, что новое действие на самом деле является фрагментом (SherlockFragmentActivity, если быть точным).
Любые идеи, почему я не могу получить доступ к appState, как раньше, и есть ли хороший обходной путь?
Много t хэнкс.
РЕДАКТИРОВАТЬ: Хороший улов, Мэтт Б. Оказывается, место, где я на самом деле вызываю getApplicationContext(), находится внутри другого класса. Вот точка вызова:
public class MyActivity extends SherlockFragmentActivity {
public static class AccountListFragment extends SherlockListFragment {
MyApp appState = ((MyApp)getApplicationContext());
...
}
...
}
Также, как отмечено ниже, ошибка исчезла, когда я изменил вызов на
MyApp appState = ((MyApp)getActivity().getApplicationContext());