0

我正在尝试开发一个带有谷歌地图 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() 类中。但我不知道如何在我的附加课程中使用它。:(

有人能帮助我吗?

非常感谢!!!

托尔斯滕

4

1 回答 1

0

尝试在 MyMap 的构造函数方法中将 mainActivity.getContext() (而不是 getApplicationContext() )作为参数传递,并在构造函数内部将该值设置为 type 属性。然后使用该上下文,例如: context.findViewById(...) 或 context.getText(...)

祝你好运!

于 2013-03-02T01:27:47.763 回答