我正在尝试开发一个带有谷歌地图v2,位置服务和一些控制按钮的Android应用程序。
我不想把所有这些东西放在一个MainActivity类中,所以我想我可以将所有代码分成更多的类。 MainActivity将控制所有GUI事物并对地图或位置事件做出反应。
现在我有以下问题。在我的onCreate中,我实现了额外的类:
// Preferences as singleton
pref = Prefs.getInstance(this.getApplicationContext());
pref.loadSettings();
// Set up the location
loc = new Locations(pref);
loc.setCallback(this);
map = new MyMap(pref);
似乎工作正常。但是每次启动应用程序时,在MyMap类内部都会抛出空指针异常。我不知道为什么以及如何预防它。调用MyMap()时,将执行以下代码:
[...]
private Prefs pref;
private GoogleMap mMap;
[...]
public MyMap(Prefs prefs) {
pref = (Prefs) prefs;
if (mMap == null) {
FragmentManager fmanager = getSupportFragmentManager();
mMap = ((SupportMapFragment) fmanager.findFragmentById(R.id.map)).getMap();
[...]
}
findFragmentById的行是导致异常的行。我认为这是因为片段管理器无法访问我的MainActivity中加载的布局。但是如何访问我的MainActivity中定义的片段和视图元素?
每个班级都有以下内容:
public class XYZ extends android.support.v4.app.FragmentActivity implements XXX, YYY
我尝试在Prefs()类中保存应用程序上下文。但我不知道如何在我的附加课程中使用它。 :(
有人能帮助我吗?
非常感谢!!!
和Thorsten
答案 0 :(得分:0)
尝试将mainActivity.getContext()(不是getApplicationContext())作为MyMap构造函数方法中的参数传递,并在构造函数中将该值设置为type属性。然后使用该上下文,例如:context.findViewById(...)或context.getText(...)
祝你好运!