我在main.java
中有一个函数,它使用一些UI元素,如spinner到textview。
public void updateNearByPeople() {
reportEventPeopleAroundSpinner = (Spinner) findViewById(R.id.peopleAround);
…
}
当我从类中调用此函数时,它工作正常。
但是当我从另一个class2.java
通过object
findViewById
投掷java.lang.NullPointerException
如果我使用static
中的函数及其中的所有变量,它在从class2.java
调用时也能正常工作,但它不适用于对象调用。
我如何解决这个问题并使对象意识到上下文?
在main.java
:
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_view);
mainAppContext = this;
Main mainObj=new Main();
gMapObj.initiateMap(mainAppContext,mainObj, mapFrag);
}
在class2.java
:
public boolean initiateMap(Context appContext, Main mainObj, MapFragment mapFrag) {
mainAppContext = appContext;
mainAppObject = mainObj;
…
mainAppObject.updateNearByPeople();
}
答案 0 :(得分:2)
Main mainObj=new Main();
你不能那样做。活动需要经历其生命周期,以构建其视图层次结构。如果只是通过new运算符实例化它,则不会调用它的onAttach或onCreate方法。这意味着您也无法访问资源和视图