He estado almacenando una variable global que es necesaria en Actividades en mi aplicación de Android mediante el uso de una subclase de android.app.Application como se explica por Soonil (en How to declare global variables in Android?).No se puede hacer una referencia estática al método no estático (Android getApplicationContext())
El enfoque es similar a esto:
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();
...
}
}
Hasta este punto, este enfoque ha funcionado bien para acceder a la variable global desde cualquiera de mis actividades. Pero hoy en día utilizando el mismo enfoque, tengo el siguiente error:
Cannot make a static reference to the non-static method getApplicationContext()
from the type ContextWrapper
La diferencia clave de antes es que la nueva actividad es en realidad un fragmento (SherlockFragmentActivity, para ser exactos).
¿Alguna idea de por qué no puedo acceder a appState como lo hice antes, y hay una buena solución?
Muchas gracias.
EDIT: Buena captura, Matt B. Resulta que el lugar en el que en realidad estoy llamando getApplicationContext() que está dentro de otra clase. Aquí está el punto de llamada:
public class MyActivity extends SherlockFragmentActivity {
public static class AccountListFragment extends SherlockListFragment {
MyApp appState = ((MyApp)getApplicationContext());
...
}
...
}
Además, como se señala más adelante, el error se fue cuando cambié la llamada a
MyApp appState = ((MyApp)getActivity().getApplicationContext());
Puede vemos el código real que tiene en su actividad que extiende SherlockFragmentActivity? EDITAR: Intenté 'Application appState = ((Application) getApplicationContext());' en mi 'SherlockFragmentActivity' y se compila muy bien. –
No veo dónde en este ejemplo de código está intentando hacer una referencia estática a ese método. ¿Estás seguro de que has publicado la (s) línea (s) correcta (s)? –
¿Puedes marcar la respuesta como correcta? – vanleeuwenbram