Не удается сделать статическую ссылку на нестатический метод ( Android getApplicationContext() )

). Приложение, как объяснил Сунил (в Как объявить глобальные переменные в 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());

7
задан Community 23 May 2017 в 12:18
поделиться