不能使静态引用非静态方法(安卓getApplicationContext())(Can't

2019-09-17 17:00发布

我一直在存储多数民众赞成需要整个活动在我的Android应用程序,通过使用android.app.Application的子类由Soonil解释一个全局变量(在如何声明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正如我前面,而且是有没有好的解决方法吗?

非常感谢。


编辑:良好的渔获,马特B.原来我实际调用getApplicationContext的地方()是另一个类中。 这里的调用点:

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

此外,如下所述,该错误走的时候我改变了呼叫

MyApp appState = ((MyApp)getActivity().getApplicationContext());

Answer 1:

getActivity().getApplication() 

应该只是罚款。

首先,您需要活动的参考,然后再申请

不同的是,你现在从一个片段(即使你把它命名为“活动”)来调用这个函数,而不是一个活动



文章来源: Can't make static reference to non-static method ( Android getApplicationContext() )