Googleマップv2、ロケーションサービス、およびいくつかのコントロールボタンを備えたAndroidアプリを開発しようとしています.
これらすべてを 1 つの 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 クラス内で null ポインター例外がスローされます。その理由と予防方法がわかりません。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() クラス内にアプリケーション コンテキストを保存しようとしました。しかし、追加のクラス内でそれを使用する方法がわかりません。:(
誰か助けてくれませんか?
どうもありがとうございました!!!
トルステン