Ne pouvez pas faire référence statique non méthode statique ( Android getcontexteapplication() )

J'ai été stocker une variable globale qui est nécessaire pour l'ensemble des Activités dans mon application Android en utilisant une sous-classe de android.app.Application comme expliqué par Soonil (en Comment déclarer des variables globales dans Android?).

L'approche ressemble à ceci:

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();
    ...
    }
}

Jusqu'à ce point, cette approche a bien fonctionné pour accéder à la variable globale à partir de mes Activités. Mais aujourd'hui, en utilisant la même approche, j'ai obtenu l'erreur suivante:

Cannot make a static reference to the non-static method getApplicationContext()
from the type ContextWrapper

La principale différence avec avant, c'est que la nouvelle Activité est en réalité un Fragment (SherlockFragmentActivity, pour être précis).

Des idées pourquoi ne puis-je pas accéder à appState comme je l'ai avant, et est-il une bonne solution?

Merci beaucoup.


EDIT: Bonne prise, Matt B. Il s'avère que la place, je suis tout à fait d'appeler getcontexteapplication() est à l'intérieur d'une autre classe. Voici l'appel de point:

public class MyActivity extends SherlockFragmentActivity {
    public static class AccountListFragment extends SherlockListFragment {
        MyApp appState = ((MyApp)getApplicationContext());
        ...
    }
    ...
}

Également, comme indiqué ci-dessous, l'erreur a disparu lorsque j'ai changé l'appel à

MyApp appState = ((MyApp)getActivity().getApplicationContext());
Peut-on voir le code que vous avez dans votre activité qui s'étend SherlockFragmentActivity? EDIT: j'ai essayé Application appState = ((Application)getApplicationContext()); dans mon SherlockFragmentActivity et il compile très bien.
Je ne vois pas où, dans cet exemple de code que vous tentez d'effectuer une référence statique à cette méthode. Êtes-vous sûr que vous avez posté la ligne correcte(s)?
pouvez-vous alors s'il vous plaît marquer la réponse comme correcte?

OriginalL'auteur gcl1 | 2012-06-01